java調用copy複製子檔案夾及檔案到指定目錄(非xcopy)

來源:互聯網
上載者:User

標籤:size   adl   tar   row   目錄   buffer   package   直接   new   

因為作所以煩因為煩所以快樂...(為什麼不先查一下有沒有現成的命令,後悔啊!!)

不知道有xcopy這個命令就自己想寫個複製子目錄和檔案的功能。。。以下故事誕生了

是這樣的,昨天在學校弄的半成品,半成品弄完晚上就跟朋友打cf了。。。他是個會帶隊團滅的牛逼人物!!

然後隔天早上去學校就拿半成品測試了一下,發現直接用copy只能複製檔案啊,不能直接複製子目錄裡的檔案(目錄指的是檔案夾,子目錄就是檔案夾裡面還有檔案夾當然也有可能是檔案)。。。。。那怎麼搞???糾結了一下,就開始把半成品稍微改了一下,似乎沒什麼卵用。。

然後就在那聽歌,在想,在發獃。。(厲害了我的哥),那位團滅的牛逼人物還時不時來跟我說話,就這樣一上午過去了。。。

然後就去吃飯了,反正一早上就想了一個大概的思路。

首先要知道:目錄裡有n個檔案,n個目錄;n個目錄裡又有n個檔案及n個目錄以此類推沒完沒了的(沒完沒了是假的誇張一點而已)

我是這樣想的:

1.判斷如果是檔案直接複製到目標目錄,如果是目錄就儲存到集合,儲存的同時在目標目錄先建立好要複製的目錄

if(是目錄){

在目標檔案夾建立要複製的檔案夾

路徑儲存到集合

}esel{

執行copy命令進行賦值

}

2.剛剛也說了目錄裡有可能有n個檔案和n個子目錄很多種可能(自己想想)

那麼我只要再加個迴圈遍曆這個集合裡的目錄,再進行一次判斷,如果是檔案還是跟第一次一樣直接複製到目標目錄

如果是目錄繼續儲存到集合

大概這樣寫:

if(是目錄){

在目標檔案夾建立要複製的檔案夾

路徑儲存到集合

for(int i=0...){

if(是目錄){

在目標檔案夾建立要複製的檔案夾

儲存到集合

}else{

直接複製過去

}

}

}else{

執行copy命令進行賦值

}

大概思路就是這樣子。

貼上代碼:

 1 package com.d9.util; 2  3 import java.io.BufferedReader; 4 import java.io.File; 5 import java.io.IOException; 6 import java.io.InputStreamReader; 7 import java.util.ArrayList; 8 import java.util.List; 9 10 public class dosCopyTest {11 12     public static void main(String[] args) throws IOException {13         String path="f:\\test1";14         String targetPath="f:\\copytest";15         File file1=new File(path);16         File file2=new File(targetPath);17         file2.mkdirs();18         String strname []=file1.list();19         Runtime run=Runtime.getRuntime();20         Process p=null;21         List<String> lpath=new ArrayList<String>();22         for(String fn:strname) {23             file2=new File(path+"\\"+fn);24             if(file2.isDirectory()) {25                 new File(targetPath+"\\"+fn).mkdirs();26                 lpath.add("\\"+fn+"\\");27                 for(int i=0;i<lpath.size();i++) {28                     file2=new File(path+lpath.get(i));29                     String strname1 []=file2.list();30                     for(String fn1:strname1) {31                         if(new File(path+lpath.get(i)+fn1).isDirectory()) {32                             new File(targetPath+lpath.get(i)+fn1).mkdirs();33                             lpath.add(lpath.get(i)+fn1+"\\");34                         }else {35                             p=run.exec("cmd /c copy "+path+lpath.get(i)+fn1+" "+targetPath+lpath.get(i)+fn1);36                             BufferedReader reader = new BufferedReader(new InputStreamReader(p.getInputStream()));37                             String line = null;38                             while ((line = reader.readLine()) != null) {39                                System.out.println(line);40                             }41                         }42                     }43                 }44             }else {45                 p=run.exec("cmd /c copy "+path+"\\"+fn+" "+targetPath+"\\"+fn);46                 BufferedReader reader = new BufferedReader(new InputStreamReader(p.getInputStream()));47                 String line = null;48                 while ((line = reader.readLine()) != null) {49                     System.out.println(line);50                 }51             }52         }53     }54 }

這樣就可以連帶子目錄和檔案一起複製了,測試過沒毛病的。

其實早上也寫的差不多,但是寫的有點亂,中午吃完飯回來在那改,改到上課還是沒改完。。

課上完還是在那改。。。改得超級煩,因為思路都短路了,都不知道自己在改什麼代碼看起來實在有點亂(佩服自己寫的代碼)

放學回到家坐了一會就打算重寫一遍。開了機開啟了eclipse然後腦子一直在想春風十裡春風十裡春風十裡春風十裡春風十裡,在想我的優酷會員什麼時候到期~到期~到期~到期,想著想著就直接開啟了youku,居然更新到29集了

發現還有3集可以看。。。此時此刻我都沒糾結要不要去寫代碼,直接點開就看,連吃飯都在看,3集被ko。看了之後心情好爽!唯一不爽的就是那個女主角周冬雨噁心。。

心情好寫代碼效率才高,寫代碼效率高心情才會好。。所以該放鬆就得放鬆該幹嘛就幹嘛

看完10點多了。。。然後就把eclipse重新開啟。。重新整理了一下思路

15分鐘寫完了???

用dos命令可以用xcop 命令賦值目錄裡的檔案及目錄

如:xcopy f:\a f:\b 

以後就用這種風格來bb寫代碼的過程了

 

java調用copy複製子檔案夾及檔案到指定目錄(非xcopy)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.