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<fs.length ;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(); } }