黑马程序员技术交流社区
标题:
复制文件夹代码
[打印本页]
作者:
Justfeeling
时间:
2014-9-18 13:37
标题:
复制文件夹代码
/*
* 复制一个文件夹
首先将数据源 c:\\demo,数据目的 d: 封装成File对象
从源中获取文件夹的名字,将目的和文件夹的名组成新的File对象,创建目的文件夹
获取数据源的中的全部文件 文件的数组File[]
遍历数组,获取到的是数据源中的文件的全路径
获取文件名,将文件名和你的数据目的文件夹组成新的File对象
源有了,目的有了,字节流读写文件
案例,IO,File类的配合使用
流读写重要,File类的方法很重要
*/
import java.io.*;
public class CopyDir {
public static void main(String[] args) {
copyDir(new File("D:\\迅雷下载"), new File("E:\\"));
}
//定义方法,实现目录的复制,定义两个参数,数据源,复制的目的
private static void copyDir(File source,File target){
//获取数据源的文件夹的名字
String name = source.getName();
//目的有了吧,+ 文件夹名,创建一个同名的目录
//目的盘,和文件夹名组成File对象
File newDir = new File(target,name);
newDir.mkdirs();//newDir d:\\demo
//遍历数据源目录下的全部文件
File[] file = source.listFiles();
for(File f : file){
//获取遍历到的目录的文件名
String filename = f.getName();
//newDir+filename d:\\demo\\新建 WinRAR ZIP 压缩文件.zip
//组成新的目录和文件名
File newFile = new File(newDir,filename);//复制的文件的目的
//数据源,数组f , 目的就是newFile , 字节流读写文件
copyFile(f,newFile);
}
}
//定义方法,实现字节流的读写文件,传递数据源和数据目的
private static void copyFile(File source , File target){
//创建字节流对象
FileInputStream fis = null;
FileOutputStream fos = null;
try{
fis = new FileInputStream(source);
fos = new FileOutputStream(target);
byte[] bytes = new byte[1024];
int len = 0;
while((len = fis.read(bytes))!=-1){
fos.write(bytes, 0, len);
}
}catch(IOException e){
e.printStackTrace();
throw new RuntimeException("复制失败");
}finally{
try{
if(fos!=null)
fos.close();
}catch(IOException e){
throw new RuntimeException("文件写入关闭失败");
}finally{
try{
if(fis!=null)
fis.close();
}catch(IOException e){
throw new RuntimeException("文件读取关闭失败");
}
}
}
}
}
复制代码
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2