1. 文件的拷贝
public static void copyFile(File src, File dest) throws IOException {// 1.传入的对象相当于建立联系
// 2.选择流
InputStream input = new FileInputStream(src);
OutputStream output = new FileOutputStream(dest);
// 3.操作
// 读取文件内容
byte[] data = new byte[1024];// 缓冲数组,数组长度大小可变
int len = 0;// 实际接收长度
while (-1 != (len = input.read(data))) {
// 写入数据
output.write(data, 0, len);
}
output.flush();// 强制冲刷
output.close();// 原则是先打开的后关闭
input.close();
}
方法的封装:
public static void copyFile(String srcPath, String destPath) throws IOException {// 1.传入的对象相当于建立联系
copyFile(new File(srcPath), new File(destPath));// 匿名内部类
}
2. 文件夹的拷贝
public static void copyDir(File src, File dest) throws IOException {
if (src.getAbsolutePath().contains(dest.getAbsolutePath())) {
System.out.println("父目录不能复制到子目录中");
return;
}
if (src.isFile()) {// 如果是文件就直接拷贝
FileUtiles.copyFile(src, new File(dest, src.getName()));
} else if (src.isDirectory()) {
new File(dest, src.getName()).mkdirs();// 保证文件夹为空时也能拷贝过去
for (File temp : src.listFiles()) {
copyDir(temp, new File(dest, src.getName()));
}
}
}