package testFile;
import java.io.*;
public class FileAndDirCopy {
//注意:任何文件(包括图片,音乐,影视,压缩文件等等)复制都要用字节流,字符流只能复制txt文档;
public static void main(String[] args) throws Exception {
//复制开始时获得系统的当前时间
long start =System.currentTimeMillis();//记录开始运行时间单位为毫秒;
//要复制的目源(源目录)
File from=new File("D:\\");
//复制到的目录(目标目录)
File to=new File("E:\\");
System.out.println("正在复制,请稍后.......");
//调用复制方法
copy(from ,to);
//复制结束时获得系统时间
long end=System.currentTimeMillis();
System.out.println("复制完成!!!");
//从毫秒转成秒
System.out.println("总费时:"+(end-start)/1000.0+"秒");
}
/**
*
* @param from 要复制的目录
* @param to 复制到目录
* @throws Exception
*/
public static void copy(File from,File to) throws Exception{
//获得复制文件下下所有文件
File []fs=from.listFiles();
//遍历文件
for(int i=0;i
//如果是一个目录
if(fs[i].isDirectory()){
//获得目录的名字
String dirname=fs[i].getName();
//创建要生成目录的绝对路径
String dirpath=to+"\\"+dirname;
File f=new File(dirpath);
//创建一个目录
f.mkdir();
//调用复制文件夹方法
copy(fs[i],f);
}else{
//获得文件名
String filename=fs[i].getName();
//获得的文件的绝对路径
String filepath=to+"\\"+filename;
//建好文件;
File f=new File(filepath);
//复制文件内容方法
copyFile(fs[i],f); //将原文件的内容复制到新文件里来;
}
}
}
/**
* //文件复制的方法
* @param from 要复制的文件
* @param to //复制到的文件
* @throws Exception
*/
public static void copyFile(File from ,File to) throws Exception{
//构建一个文件输入流对象
FileInputStream fin=new FileInputStream(from);
//构建以个文件输出流对象
FileOutputStream fout=new FileOutputStream(to);
//缓冲输入流
BufferedInputStream bin=new BufferedInputStream(fin);
//缓存输出流
BufferedOutputStream bout=new BufferedOutputStream(fout);
//定义个字节数组,作为输入流和输出流的中介
byte [] b=new byte[2048];
//读入的字节长度如果为-1,说明没有内容了
int len=bin.read(b);
while(len !=-1){
//将字节数组写入输出流中
bout.write(b,0,len);
len=bin.read(b);
}
//关闭流,注意顺序
bout.close();
fout.close();
bin.close();
fin.close();
}
}