通过使用Java的文件字节流拷贝文件或文件夹,file1->file2
注意:
- 无论是文件还是文件夹,都可以实现拷贝
- file2文件夹内部的原内容继续保存且不变
- 若文件夹file2不存在则会自动创建
- 该函数通过递归调用实现
- 由于使用的是文件字节流,所以无论是文本文件还是图片或视频都可以实现拷贝
java
public static void copyDirectory(File file1,File file2) { //拷贝函数:file1->file2
if (!file1.exists() | file1 == null) {
return;
}
if (!file2.exists()) {
file2.mkdirs();
}
String name = file1.getName();
File file3 = new File(file2.getAbsoluteFile() +"\\"+ name);
if (file1.isFile()) {
try (FileInputStream inputStream = new FileInputStream(file1);
FileOutputStream outputStream = new FileOutputStream(file3)) {
byte[] bytes = new byte[1024];
int len;
while ((len = inputStream.read(bytes)) != -1) {
outputStream.write(bytes, 0, len);
}
return;
} catch (IOException e) {
e.printStackTrace();
}
}
file3.mkdir();
File[] files = file1.listFiles();
for (int i = 0; i < files.length; i++) { //递归调用
copyDirectory(files[i], file3);
}
}
测试
java
public static void main(String[] args) { //测试
File file = new File("target");
File file2 = new File("target2"); //文件夹target2的原内容不变
copyDirectory(file,file2);
}