黑马程序员技术交流社区

标题: 分享一个难倒很多人的题,复制整个文件夹内容。 [打印本页]

作者: Troy123    时间: 2014-9-10 23:57
标题: 分享一个难倒很多人的题,复制整个文件夹内容。
  1. public class copytest2{
  2.         static String url1 ="c://Hearthstone";
  3.         static String url2 ="c://folder1";
  4.         public static void main(String[] args)throws IOException{
  5.                 System.out.println("正在拷贝......");
  6.                 long start,end;
  7.                 start = System.currentTimeMillis();
  8.                 //创建目标文件夹
  9.                 (new File(url2)).mkdirs();
  10.                 //获取源文件夹下的文件或目录
  11.                 File[] file = (new File(url1)).listFiles();
  12.                 for(int i=0;i<file.length;i++){
  13.                         if(file[i].isFile()){
  14.                                 //复制文件
  15.                                 copyFile(file[i],new File(url2+"/"+file[i].getName()));               
  16.                         }
  17.                         if(file[i].isDirectory()){
  18.                                 //复制目录
  19.                                 String sourceDir=url1+"/"+file[i].getName();
  20.                                 String targetDir=url2+"/"+file[i].getName();
  21.                                 copyDir(sourceDir,targetDir);
  22.                         }
  23.                 }
  24.                 end= System.currentTimeMillis();
  25.                 System.out.println("拷贝完成,用时"+(end-start)+"毫秒");
  26.         }
  27.         //复制文件
  28.         public static void copyFile(File sourceFile,File targetFile)throws IOException{
  29.                 //建立带缓冲区的输入流对象
  30.                 BufferedInputStream bufis = new BufferedInputStream(new FileInputStream(sourceFile));
  31.                 //建立带缓冲区的输出流对象
  32.                 BufferedOutputStream bufos = new BufferedOutputStream(new FileOutputStream(targetFile));
  33.                 int by = 0;
  34.                 while((by=bufis.read())!=-1){
  35.                         bufos.write(by);
  36.                 }
  37.                 bufis.close();
  38.                 bufos.close();
  39.         }
  40.         //复制文件夹
  41.         public static void copyDir(String sourceDir,String targetDir)throws IOException{
  42.                 //新建目标目录
  43.                 (new File(targetDir)).mkdirs();
  44.                 //获取源文件夹下的文件或目录
  45.                 File[] file = (new File(sourceDir)).listFiles();
  46.                 for(int i=0;i<file.length;i++){
  47.                         if(file[i].isFile()){
  48.                                 //源文件
  49.                                 File sourceFile=file[i];
  50.                                 //目标文件
  51.                                 File targetFile=new File(new File(targetDir).getAbsolutePath()+"/"+file[i].getName());
  52.                                 copyFile(sourceFile,targetFile);
  53.                         }
  54.                         if(file[i].isDirectory()){
  55.                                 //准备复制的源文件夹
  56.                                 String dir1 = sourceDir+"/"+file[i].getName();
  57.                                 //准备复制的目标文件夹
  58.                                 String dir2 = targetDir+"/"+file[i].getName();
  59.                                 copyDir(dir1,dir2);       
  60.                         }
  61.                 }       
  62.         }
  63. }
复制代码

作者: zhxu188    时间: 2014-9-11 00:08
看看,学习了
作者: 戏言丶    时间: 2014-9-11 00:12
俺是来学习的




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2