目录拷贝
package com;
import java.io.*;
/**
* 拷贝目录
*/
public class CopyAll {
public static void main(String[] args) {
//拷贝源
File srcFile = new File("D:\\test.txt");
//拷贝目标
File destFile =new File("D:\\a");
//调用方法拷贝
copyDir(srcFile,destFile);
}
/**拷贝目录
* @param srcFile
* @param 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];//一次复制1mb
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();
System.out.println(files.length);
for(File file:files){
// System.out.println(file.getAbsolutePath());//获取文件或目录绝对路径
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.mkdir();
}
} //递归调用
copyDir(file,destFile);
}
}
}