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
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.