实现复制文件夹,包括文件夹中的文件夹以及文件:
/**
*
* @param sourceFile 源目录
* @param targetFile 目标目录
*/
public static void copyFile(File sourceFile,File targetFile){
File[] files = null;
if(!targetFile.exists()){
targetFile.mkdir();
}
//如果没有目录,创建
if(sourceFile.isDirectory()){
files = sourceFile.listFiles();
}
for(int i = 0;i<files.length;i++){
File file1 = null;
if(!files[i].isDirectory()){
//不是目录,复制
file1 = new File(targetFile+File.separator+"temp"+files[i].getName());
//文件不存在,创建
if(!file1.exists()){
try {
file1.createNewFile();
} catch (IOException e) {
e.printStackTrace();
}
}
BufferedReader reader = null;
BufferedWriter writer = null;
try {
reader = new BufferedReader(new InputStreamReader(new FileInputStream(sourceFile+File.separator+files[i].getName())));
writer = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(file1)));
String temp = null;
while((temp = reader.readLine())!=null){
writer.write(temp);
}
} catch (IOException e) {
e.printStackTrace();
}finally {
try {
if(writer!=null){
writer.close();
}
if(reader!=null){
reader.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}else{
//是目录,递归
copyFile(new File(sourceFile+ File.separator+files[i].getName()),
new File(targetFile+File.separator+"temp"+files[i].getName()));
}
System.out.println(files[i].getName());
}
}
public static void main(String[] args) {
File file = new File("E:\\tomcat");
//复制目标路径
File tempFile = new File("E:\\tomcatTemp");
copyFile(file,tempFile);
}