问题描述:
如何将D盘中的目录拷贝到C盘指定目录下
代码实现
import java.io.*;
public class CopyAll {
public static void main(String[] args) {
//拷贝源
File srcFile = new File("D:\\360Safe");
//拷贝目标
File destFile = new File("c:\\a\\b\\");
//调用拷贝方法
copyDir(srcFile,destFile);
}
private static void copyDir(File srcFile, File destFile) {
if (srcFile.isFile()){
//srcFile肯定先是一个目录,是一个文件的话递归结束
//在目录里进行拷贝,一边读一边写
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);
byte[] bytes = new byte[1024 * 1024];
int readCount = 0;
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){
//获取所有目录和文件的绝对路径
// System.out.println(file.getAbsoluteFile());
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);
}
}
}