import java.io.*;
public class CopyFoldersDemo {
public static void main(String[] args) throws IOException {
//源文件
File srcFile = new File("源路径");
//目的地
File destFile = new File("目的地路径");
//复制文件夹
copyFolder(srcFile, destFile);
}
// 复制文件夹
private static void copyFolder(File srcFile, File destFile) throws IOException {
// 判断数据源File是否是目录
if (srcFile.isDirectory()) {
// 在目的地下创建和数据源File名称一样的目录
String srcFileName = srcFile.getName();
File newFolder = new File(destFile, srcFileName);
if (!newFolder.exists()) {
newFolder.mkdir();
}
//获取数据源File下的所有文件或者目录数组
File[] fileArray = srcFile.listFiles();
assert fileArray != null;
for (File file : fileArray) {
// 把该File作为数据源File对象,递归调用复制文件夹的方法
copyFolder(file, newFolder);
}
} else {
// 说明是文件直接使用字节缓冲流复制
File newFile = new File(destFile, srcFile.getName());
copyFile(srcFile, newFile);
}
}
// 字节缓冲流复制文件
private static void copyFile(File srcFile, File destFile) throws IOException {
BufferedInputStream bis = new BufferedInputStream(new FileInputStream(srcFile));
BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(destFile));
//读写复制文件
byte[] bys = new byte[1024];
int len;
while ((len = bis.read(bys)) != -1) {
bos.write(bys, 0, len);
}
//释放资源
bis.close();
bos.close();
}
}
|