import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
/**
* 遞歸實現文件夾copy
*/
public class Test3 {
public static void main(String[] args){
File file = new File("F:\\1");
File file2 = new File("F:\\2");
if (file.getAbsolutePath().equals(file2.getAbsolutePath())) {
System.out.println("不可copy(原因:可能是同一個文件或文件夾)");
return;
}
// 源目錄不存在
if (!file.exists()) {
System.out.println("源目錄或源文件不存在");
return;
}
// file是文件,直接copy
if (file.isFile()) {
// file爲文件則直接copy文件,copy完成後終止程序
System.out.println("正在copy文件,請稍後");
copyFile(file, file2);
System.out.println("文件copy完成");
return;
}
// file是文件夾
if (file.isDirectory()) {
System.out.println("正在copy文件夾,請稍後");
copyAllFiles(file,file2);
System.out.println("文件夾copy完成");
}else {
System.out.println("抱歉,文件夾copy失敗");
}
}
public static void copyAllFiles(File file,File file2) {
File[] listFiles = file.listFiles();
if (listFiles!=null) {
for (File f : listFiles) {
File temp = new File(file2.getAbsoluteFile(),f.getName());
if (f.isDirectory()) {
temp.mkdirs();
copyAllFiles(f,temp);
}else {
copyFile(f, temp);
}
}
}
}
public static void copyFile(File f1,File f2){
FileInputStream fileInputStream = null;
FileOutputStream fileOutputStream = null;
try {
fileInputStream = new FileInputStream(f1);
fileOutputStream = new FileOutputStream(f2);
int length = 0;
byte[] bytes = new byte[1024];
while ((length=fileInputStream.read(bytes))!=-1) {
fileOutputStream.write(bytes,0,length);
//System.out.println("寫入完畢");
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}finally {
try {
if (fileInputStream!=null) {
fileInputStream.close();
}
} catch (IOException e) {
e.printStackTrace();
}
try {
if (fileOutputStream!=null) {
fileOutputStream.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
遞歸實現文件夾copy
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.