import java.io.*;
public class FileDirTest01 {
public static void main(String[] args) {
// 拷貝檔案夾目錄
File in = new File("");
// 拷貝目標(目錄)
File out = new File("");
// 呼叫方法
CopyDir(in, out);
}
/**
* 拷貝檔案夾里面檔案夾及檔案,
* @param in 拷貝檔案目錄
* @param out 拷貝目標(目錄)
*/
private static void CopyDir(File in, File out) {
if(in.isFile()) {
// srcFile如果是一個檔案的話,遞回結束。
// 是檔案的時候需要拷貝。
// ....一邊讀一邊寫。
FileInputStream input = null;
FileOutputStream output = null;
try {
// 讀這個檔案
input = new FileInputStream(in);
// 寫檔案到新的目錄為 out.getAbsolutePath()+"\\"+in.getName()
output = new FileOutputStream(out.getAbsolutePath()+"/"+in.getName());
byte[] bytes = new byte[1024*1024]; //一次復制1M
int readCount = 0;
/**
* 復制檔案 一次復制1024*1024位元組(1M)
*/
while((readCount = input.read(bytes)) != -1) {
output.write(bytes,0,readCount);
}
output.flush();
} catch (FileNotFoundException e) {
e.printStackTrace();
}
catch (IOException e) {
e.printStackTrace();
} finally {
if (input != null) {
try {
input.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if (output != null) {
try {
output.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
return;
}
File[] files = in.listFiles();
for (File file: files) {
if (file.isDirectory()) { //判斷是否為檔案夾,是
// 新的目錄為 out.getAbsolutePath() + "/" + in.getName()
File newDir = new File(out.getAbsolutePath()+"\\"+in.getName());
if (!newDir.exists()) { //判斷是否含有此檔案夾,否
newDir.mkdirs(); //創建子目錄
}
CopyDir(file,newDir);
System.out.println(newDir.getAbsolutePath());
System.out.println(file.getAbsolutePath());
}
// 遞回方法CopyDir
CopyDir(file,out);
}
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/269594.html
標籤:Java SE
