A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© Rain2692 高级黑马   /  2014-12-19 14:15  /  1537 人查看  /  12 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

把一个文件夹复制到另一个路径下,经过仔细的筛选整理的,希望对大家有用。。。
  1. [hide]public static void main(String[] args)throws Exception {
  2. // TODO Auto-generated method stub
  3. File file = new File("D:\\Java--String");
  4. File newfile = new File("E:\\Java--String副本");
  5. ArrayList<File> al = new ArrayList<>();
  6. fileTolist(file,al);
  7. copyTodir(al,newfile);
  8. }
  9. //统计,分类添加
  10. public static void fileTolist(File dir,ArrayList<File> al)
  11. {
  12. File[] files = dir.listFiles();
  13. for(File file:files)
  14. {
  15. if(file.isDirectory())
  16. {
  17. al.add(file);
  18. fileTolist(file,al);
  19. }
  20. else{

  21. al.add(file);
  22. }
  23. }
  24. }

  25. //创建目录及拷贝文件
  26. public static void copyTodir(ArrayList<File> al,File newfile)throws Exception
  27. {
  28. newfile.mkdirs();
  29. for(int i = 0;i<al.size();i++)
  30. {
  31. if(al.get(i).isDirectory())
  32. {
  33. String str = al.get(i).getAbsolutePath().replace("D:\\Java--String", "E:\\Java--String副本");
  34. new File(str).mkdirs();
  35. }
  36. else
  37. {
  38. copyfile(al.get(i));
  39. }

  40. }

  41. }
  42. //拷贝文件
  43. public static void copyfile(File file)throws Exception
  44. {
  45. BufferedReader bufr = new BufferedReader(
  46. new InputStreamReader(new FileInputStream(file)));
  47. BufferedWriter bufw = new BufferedWriter(new OutputStreamWriter
  48. (new FileOutputStream(file.toString().replace("D:\\Java--String", "E:\\Java--String副本"))));

  49. String line = null;
  50. while((line=bufr.readLine())!=null)
  51. {
  52. bufw.write(line);
  53. bufw.newLine();
  54. bufw.flush();
  55. }

  56. bufr.close();
  57. bufw.close();
  58. }[/hide]
复制代码



12 个回复

倒序浏览
先占一个,嘿嘿。。。
回复 使用道具 举报
在发一个。。。
回复 使用道具 举报
顶到前面。。。不能沉啊
回复 使用道具 举报
这是字符流还是字节流的方式?
回复 使用道具 举报
拷贝目录你用字符缓冲流的话不太合适吧
  1. public static void copyDir(File srcDir, File destDir) throws IOException {
  2.                 if (!destDir.exists()) {
  3.                         destDir.mkdirs();
  4.                 }
  5.                 File newDir = new File(destDir, srcDir.getName());
  6.                 newDir.mkdir();
  7.                 File[] files = srcDir.listFiles();
  8.                 for (File file : files) {
  9.                         if (file.isDirectory()) {
  10.                                 copyDir(file, newDir);
  11.                         } else {
  12.                                 try (BufferedInputStream bufferedInputStream = new BufferedInputStream(new FileInputStream(file));
  13.                                                 BufferedOutputStream bufferedOutputStream = new BufferedOutputStream(new FileOutputStream(newDir.getPath() + File.separator + file.getName()));) {
  14.                                         int b = -1;
  15.                                         while ((b = bufferedInputStream.read()) != -1) {
  16.                                                 bufferedOutputStream.write(b);
  17.                                         }
  18.                                 } catch (Exception e) {
  19.                                         throw new RuntimeException(e.toString());
  20.                                 }
  21.                         }
  22.                 }
  23.         }
复制代码
回复 使用道具 举报
笔试是做之前的题吗
回复 使用道具 举报
惠惠惠惠惠 发表于 2015-1-1 16:59
笔试是做之前的题吗

恩,是的,我笔试的时候,有这道题。。
回复 使用道具 举报
Rain2692 发表于 2015-1-1 17:48
恩,是的,我笔试的时候,有这道题。。

我是说笔试做的题是不是之前基础测试和入学测试那20道里面的题。。。
回复 使用道具 举报
虽然还没学到这,不过还是要谢谢楼主的分享
回复 使用道具 举报
惠惠惠惠惠 发表于 2015-1-1 17:51
我是说笔试做的题是不是之前基础测试和入学测试那20道里面的题。。。

不仅有上面的,还有视频里面的东西。。。
回复 使用道具 举报
雨祭 发表于 2015-1-1 18:00
虽然还没学到这,不过还是要谢谢楼主的分享

可以参考一下,这道题目面试的时候有,笔试的时候也有。。
回复 使用道具 举报
代码应该还能简化一下吧
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马