需求:
将一个目录及其所有的子目录,子文件,拷贝到另一个目录下。
思路:
需要使用InputStream,OutputStream,File
需要使用递归
代码:
package cn.donglinode.IO;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
public class CopyDirectory {
public static void main(String[] args) throws Exception {
//源目录
File sourceFile=new File("E:\\AA聚类");
//目标目录
File targetFile=new File("F:\\a\\b");
copyDir(sourceFile,targetFile);
}
public static void copyDir(File sourceFile, File targetFile) throws Exception{
//如果sourceFile为空,直接返回
if (sourceFile==null){
return;
}
//如果sourceFile是个文件,那么直接拷贝文件
if (sourceFile.isFile()){
FileInputStream fis=new FileInputStream(sourceFile.getAbsolutePath());
String name=sourceFile.getName();
FileOutputStream fos=new FileOutputStream(targetFile.getAbsolutePath()+"\\"+name);
byte[] bytes=new byte[1024];
int readCount=0;
while((readCount=fis.read(bytes))!=-1){
fos.write(bytes,0,readCount);
}
return;
}
//首先,sourceFile目录拷贝到targetFile目录下
targetFile=new File(targetFile.getAbsolutePath()+"\\"+sourceFile.getName());
if (!targetFile.exists()){
targetFile.mkdir();
}
//遍历sourceFile目录下的所有文件
File[] files = sourceFile.listFiles();
for(File f:files){
//递归调用
copyDir(f,targetFile);
}
}
}