package test.io;
import java.io.*;
/**
* 复制一整个文件夹
*/
public class CopyDir {
public static void main(String[] args) {
copyDir(new File("D:\\Cut"), new File("io2"));
}
/**
* 迭代复制整个文件夹中所有内容
* @param srcDir 源目录
* @param targetDir 目标目录
*/
public static void copyDir(File srcDir, File targetDir){
//目标文件夹不存在新建
if (!targetDir.exists()){
targetDir.mkdir();
}
//源目录下文件数组
File[] files = srcDir.listFiles();
for (File f : files) {
//新文件或者文件夹
File newFile = new File(targetDir, f.getName());
//子文件夹递归复制
if (f.isDirectory()){
//递归复制文件夹下的内容
copyDir(f.getAbsoluteFile(), newFile);
}else {
//文件直接复制
copy(f.getAbsoluteFile(), newFile);
}
}
}
/**
* 复制文件
* @param src 源文件
* @param target 目标文件
*/
public static void copy(File src, File target){
FileInputStream fis = null;
FileOutputStream fos = null;
try {
fis = new FileInputStream(src);
fos = new FileOutputStream(target);
byte[] buffer = new byte[1024*1024];
int readNum;
while ((readNum = fis.read(buffer)) != -1){
fos.write(buffer, 0, readNum);
}
fos.flush();
} catch (FileNotFoundException e) {
throw new RuntimeException(e);
} catch (IOException e) {
throw new RuntimeException(e);
} finally {
if (fis != null) {
try {
fis.close();
} catch (IOException e) {
throw new RuntimeException(e);
}
}
if (fos != null) {
try {
fos.close();
} catch (IOException e) {
throw new RuntimeException(e);
}
}
}
}
}
复制整个文件夹
这篇文章详细描述了一个Java程序,名为CopyDir,它使用递归方法复制整个文件夹及其内容,包括处理文件和子文件夹。主要涉及到了File类、InputStream和OutputStream用于文件操作。
摘要由CSDN通过智能技术生成