//源文件
File srcFile = new File("D:\\Users");
//目标文件
File destFile = new File("C:\\");
//复制目录
copyDir(srcFile,destFile);
}
private void copyDir(File srcFile, File destFile) {
//如果是文件的话,一边读一边写
if(srcFile.isFile()){
FileInputStream in = null;
FileOutputStream out = null;
try {
in = new FileInputStream(srcFile);
String path = destFile.getAbsolutePath().endsWith("\\")? destFile.getAbsolutePath(): destFile.getAbsolutePath()+"\\"+srcFile.getAbsolutePath().substring(3);
out = new FileOutputStream(path);
int readCount = 0;
byte[] bytes = new byte[1024*1024];//一次写最多1MB
while((readCount = in.read(bytes))!=-1){
out.write(bytes,0,readCount);
}
out.flush();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}finally {
if (in != null) {
try {
in.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if (out != null) {
try {
out.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
return;
}
//到这就是目录
File[] files = srcFile.listFiles();
for (File file:files) {
//创建子目录
if(file.isDirectory()){
String srcDir = file.getAbsolutePath();
//目标文件要以\结尾,再加上源文件截取盘符
String destDir = (destFile.getAbsolutePath().endsWith("\\")?destFile.getAbsolutePath(): destFile.getAbsolutePath()+"\\") +srcDir.substring(3);
File newFile = new File(destDir);
if(!newFile.exists()){
newFile.mkdirs();
}
}
//递归复制文件
copyDir(file,destFile);
}
}
目录拷贝的例子
最新推荐文章于 2024-08-24 22:01:16 发布