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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 宋文轩 黑马帝   /  2011-11-11 21:44  /  1903 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文


        需求是:取出D:盘下全部的.java文件的文件路径保存在java.txt文件中  
         下面是我自己写的,但是只写出了一个文件,苦思冥想没有找到原因,请大家有空帮忙瞅瞅。
  1.                 public static void main(String[] args) {
  2.                 File dir = new File("E:\\MyEclipse\\heimaStudy");
  3.                 File file = new File("C:\\java.txt");
  4.                 getJavaFile(dir, file);
  5.         }

  6.         public static void getJavaFile(File dir, File file1) {
  7.                 BufferedWriter bfw = null;
  8.                 try {
  9.                         bfw = new BufferedWriter(new FileWriter(file1));
  10.                 } catch (IOException e) {
  11.                         // TODO Auto-generated catch block
  12.                         e.printStackTrace();
  13.                 }
  14.                 File files[] = dir.listFiles();
  15.                 for (int i = 0; i < files.length; i++) {
  16.                         if (files[i].isDirectory())
  17.                                 getJavaFile(files[i], file1);
  18.                         else {
  19.                                 String file = files[i].getName();
  20.                                 if (file.endsWith(".java")) {
  21.                                         try {
  22.                                                 bfw.write(files[i].getAbsolutePath());
  23.                                                 bfw.newLine();
  24.                                                 bfw.flush();
  25.                                         } catch (IOException e) {
  26.                                                 // TODO Auto-generated catch block
  27.                                                 e.printStackTrace();
  28.                                         }
  29.                                 }
  30.                         }

  31.                 }
  32.                 try {
  33.                         bfw.close();
  34.                 } catch (IOException e) {
  35.                         // TODO Auto-generated catch block
  36.                         e.printStackTrace();
  37.                 }
  38.         }
  39. }
复制代码

3 个回复

倒序浏览
我自己找到原因了 发上来防止大家犯同样的错误哈 bfw.write(files[i].getAbsolutePath(),true)就可以了,否则每次都会覆盖上面写过的东西,变成最后就只剩下了最后一个文件。哈哈,纠结了好久才发现。

评分

参与人数 1技术分 +1 收起 理由
admin + 1 赞一个!

查看全部评分

回复 使用道具 举报
从中午吃过饭到现在一直在写你说的这个东西,还没写出来,有思路,但是在一个地方卡住了:那就是如何判断  files[i] 是个目录还是文件,你写的这个肯定不行,因为files[i]是一个文件或者文件夹的String,即使是文件夹用isDiretory()方法判断也是false,所以找到如何判断遍历到的是文件夹的方法以后就行了。但是我还没有找到,3个小时了,惭愧....
回复 使用道具 举报
本帖最后由 宋文轩 于 2011-11-12 16:59 编辑

    files[i

]是File类型的,所以用isDirectory()方法是可以的  前面我用的是listFiles()方法 返回的是一个File类型的数组。 我这个代码加上我前面说的那个错误的地方就解决了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马