資料夾的複製--遞迴演算法
在Java中,要想實現資料夾的複製,採用的是IO技術。通常對我們來說,要想實現一個檔案的複製,是十分簡單的。那資料夾的復呢?我們只需要從中間價格遞迴演算法即可。
要求是:將test資料夾的所有內容都複製到test1資料夾下,且要求test資料夾中的結構不變,如/test/a/b.doc檔案在test1檔案下的目錄應該是/test1/test/a/b.doc.
具體的程式碼實現如下
package com.tiantang.io;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
public class TestFileStream {
public static void main(String[] args) {
String srcPath="F:\\test";
File src=new File(srcPath);
String destPath="F:\\test1";
File dest=new File(destPath);
copyDir(src, dest);
}
public static void copyDir(File src, File dest) {
if(src.isDirectory()){
File temp=new File(dest,src.getName());
temp.mkdirs();
for (File file : src.listFiles()) {
copyDir(file, temp);
}
}else{
copyFile(src, new File(dest,src.getName()));
}
}
/**
* 拷貝檔案
*
* @param src
* @param dest
*/
public static void copyFile(File src, File dest) {
InputStream in = null;
OutputStream out = null;
try {
in = new FileInputStream(src);
out = new FileOutputStream(dest);
byte[] b = new byte[1024];
int len = 0;
while (-1 != (len = in.read(b))) {
out.write(b, 0, len);
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
out.close();
} catch (IOException e) {
e.printStackTrace();
}
try {
in.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
要想實現資料夾的複製,就得用到遞迴,剩下的就是檔案的複製了。思路:當要複製資料夾時,我們用listFiles()方法得到資料夾的所有File,然後在遍歷所有的File物件,再判斷他們是資料夾還是檔案....。相關文章
- Java 資料夾遞迴遍歷Java遞迴
- PHP遞迴遍歷資料夾PHP遞迴
- Java遍歷資料夾的兩種方法(非遞迴和遞迴)Java遞迴
- 尾遞迴實現深複製遞迴
- Python如何遞迴刪除空資料夾Python遞迴
- 遞迴演算法的時間複雜度遞迴演算法時間複雜度
- 資料結構和演算法:遞迴資料結構演算法遞迴
- 資料結構與演算法:遞迴資料結構演算法遞迴
- asp.net 遞迴刪除資料夾及其子資料夾和所有檔案[轉]ASP.NET遞迴
- Android遞迴刪除資料夾下所有檔案Android遞迴
- C# 將資料夾中檔案複製到另一個資料夾C#
- 使用CMD命令複製和刪除資料夾的方法
- nodejs遞迴資料夾獲取所有檔案路徑NodeJS遞迴
- 資料結構與演算法(十一)——演算法-遞迴資料結構演算法遞迴
- Mac拷貝/複製資料夾路徑快捷鍵Mac
- c#複製包含子目錄資料夾程式碼C#
- Java中實現複製檔案或資料夾Java
- 利用java本地複製檔案及資料夾 (轉)Java
- 批次複製資料夾而不復制內容
- 用TC來實現只複製資料夾而不復制資料夾中的內容
- 遞迴演算法轉換為非遞迴演算法的技巧遞迴演算法
- 遞迴修改資料夾下面所有檔案裡面的的abc為abcde遞迴
- 資料結構-遞迴資料結構遞迴
- 遞迴演算法遞迴演算法
- Java資料結構與演算法--遞迴和回溯Java資料結構演算法遞迴
- 使用java API進行zip遞迴壓縮資料夾以及解壓JavaAPI遞迴
- Java遞迴遍歷資料夾及檔案過濾器使用(FileFilter)Java遞迴過濾器Filter
- [grep] grep -R -l 遞迴過濾資料夾中檔案內容遞迴
- 遞迴處理複製變數目錄按原路徑複製到新目錄的指令碼遞迴變數指令碼
- 揹包問題的遞迴與非遞迴演算法遞迴演算法
- 【Java資料結構與演算法筆記(二)】樹的四種遍歷方式(遞迴&非遞迴)Java資料結構演算法筆記遞迴
- 演算法小專欄:遞迴與尾遞迴演算法遞迴
- java檔案和資料夾複製、刪除、移動操作Java
- python複製資料夾到一個目錄,或者按目錄層級建立複製Python
- linux[批量複製並重新命名]和[批量複製檔案到多個資料夾]Linux
- QTP中對映驅動器和複製資料夾的指令碼QT指令碼
- Redis的資料複製Redis
- 說說在 Python 中如何遞迴建立不存在的資料夾路徑Python遞迴