/*
* 需求:将指定目录(包含内容)复制到另一个目录中
*
* 源目录 目标目录
*
*
* 分析:
* 首先我们要获取源目录下所有的文件和子目录,
* 我们可以把源目录封装成一个File对象,
* 我们可以调用File类listFiles()方法,
* 我们可以获取源目录下所有的文件和子目录所对应的File对象。
* 如果我们获取到的是文件
* 先在目标目录中创建该文件所对应的目录,
* 进行文件的复制。
* 如果我们获取到的是子目录
* 看看子目录下面是否还有其他的文件和更深层次的子目录
*
*
*
*/
public class RecourrenceDemo02 {
public static void main(String[] args) throws IOException {
// 复制文件夹
File src = new File("D:\\英雄时刻"); //源目录
File goal = new File("D:\\aaaa"); //目标目录
copyFile(src,goal);
}
@SuppressWarnings("resource")
public static void copyFile(File src,File goal) throws IOException{
//为了严谨起见,我们首先对源目录和目标目录进行判断,看他们到底是不是目录
if(src.isDirectory() && goal.isDirectory()) {
//如果两个对象都是目录,需要创建新的目录
//文件的目录为:goal+src.getName (D:\\aaaa+英雄时刻)
File newFile = new File(goal,src.getName());
if(!newFile.exists()){ //判断文件夹是否存在
newFile.mkdirs(); //创建目录
}
//获取源目录下所有的文件和子目录
File[] list = src.listFiles();
for (File file : list) {
if(file.isFile()){
//如果文件是文件,就进行复制文件操作
FileInputStream in = new FileInputStream(file);
//newFile+遍历出file文件的名字(D:\\aaaa\\英雄时刻+file的名字))
FileOutputStream out = new FileOutputStream(new File(newFile,file.getName()));
byte[] by=new byte[1024];
int len;
while((len=in.read(by))!=-1){
out.write(by, 0, len);
}
in.close();
out.close();
}else{
//如果File对象是子目录,递归, 这里注意传入的对象,出错会出现堆内存溢出异常
copyFile(file,newFile);
}
}
}
}}
需求:将指定目录(包含内容)复制到另一个目录中(利用字节流复制文本文件)
最新推荐文章于 2020-07-26 15:55:22 发布