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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© Rain2692 高级黑马   /  2014-12-19 14:15  /  1493 人查看  /  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 个回复

正序浏览
代码应该还能简化一下吧
回复 使用道具 举报
雨祭 发表于 2015-1-1 18:00
虽然还没学到这,不过还是要谢谢楼主的分享

可以参考一下,这道题目面试的时候有,笔试的时候也有。。
回复 使用道具 举报
惠惠惠惠惠 发表于 2015-1-1 17:51
我是说笔试做的题是不是之前基础测试和入学测试那20道里面的题。。。

不仅有上面的,还有视频里面的东西。。。
回复 使用道具 举报
虽然还没学到这,不过还是要谢谢楼主的分享
回复 使用道具 举报
Rain2692 发表于 2015-1-1 17:48
恩,是的,我笔试的时候,有这道题。。

我是说笔试做的题是不是之前基础测试和入学测试那20道里面的题。。。
回复 使用道具 举报
惠惠惠惠惠 发表于 2015-1-1 16:59
笔试是做之前的题吗

恩,是的,我笔试的时候,有这道题。。
回复 使用道具 举报
笔试是做之前的题吗
回复 使用道具 举报
拷贝目录你用字符缓冲流的话不太合适吧
  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.         }
复制代码
回复 使用道具 举报
这是字符流还是字节流的方式?
回复 使用道具 举报
顶到前面。。。不能沉啊
回复 使用道具 举报
在发一个。。。
回复 使用道具 举报
先占一个,嘿嘿。。。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马