文件夹的复制
代码思路如下:
- 在目标文件夹下面创建与源文件夹同名的文件夹
- 获取源文件夹中的文件名并创建文件
- 循环读取并写入数据
- 释放资源
代码如下:
public class test4 {
public static void main(String[] args) throws IOException {
File src = new File("G:\\1");// 原文件地址
File dest = new File("G:\\2");// 目标文件夹地址
copyDir(src, dest);
System.out.println("执行成功");
}
// 复制文件夹
public static void copyDir(File srcDir, File destDir) throws IOException {
if (srcDir.exists() && srcDir.isDirectory()) {
// 创建文件夹
File destDirs = new File(destDir, srcDir.getName());
destDirs.mkdirs();
// 获取源文件夹下面所有的文件
File[] files = srcDir.listFiles();
for (File file : files) {
if(file.isFile()){
// 复制文件
copyFile(file,destDirs);
}else {
// 复制文件夹
copyDir(file, destDirs);
}
}
} else {
throw new RuntimeException("文件夹不存在或者不是文件夹");
}
}
// 复制文件
public static void copyFile(File srcFile, File destDir) throws IOException {
// 1、在destDir目录下创建和srcFile同名的文件
File destFile = new File(destDir, srcFile.getName());
// 2、读取源文件 把读到的文件写入目标文件
FileInputStream fileInputStream = new FileInputStream(srcFile);
FileOutputStream fileOutputStream = new FileOutputStream(destFile);// 创建与源文件同名得我空文件
byte[] bytes = new byte[1024];
int len;
while ((len = fileInputStream.read(bytes)) != -1) {
// 把读到的内容写入新文件中
fileOutputStream.write(bytes, 0, len);
}
// 3、释放资源
fileInputStream.close();
fileOutputStream.close();
}
}