您的位置:首页 > 编程语言 > PHP开发

需求:将指定目录(包含内容)复制到另一个目录中(利用字节流复制文本文件)

2017-07-01 18:56 281 查看
/*
* 需求:将指定目录(包含内容)复制到另一个目录中
*
* 源目录		目标目录
*
*
* 分析:
* 		首先我们要获取源目录下所有的文件和子目录,
* 				我们可以把源目录封装成一个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);
}
}
}

}}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐