黑马程序员技术交流社区

标题: IO程序问题 [打印本页]

作者: 宋文轩    时间: 2011-11-11 21:44
标题: IO程序问题

        需求是:取出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. }
复制代码

作者: 宋文轩    时间: 2011-11-12 14:18
我自己找到原因了 发上来防止大家犯同样的错误哈 bfw.write(files[i].getAbsolutePath(),true)就可以了,否则每次都会覆盖上面写过的东西,变成最后就只剩下了最后一个文件。哈哈,纠结了好久才发现。
作者: 张志东    时间: 2011-11-12 15:29
从中午吃过饭到现在一直在写你说的这个东西,还没写出来,有思路,但是在一个地方卡住了:那就是如何判断  files[i] 是个目录还是文件,你写的这个肯定不行,因为files[i]是一个文件或者文件夹的String,即使是文件夹用isDiretory()方法判断也是false,所以找到如何判断遍历到的是文件夹的方法以后就行了。但是我还没有找到,3个小时了,惭愧....
作者: 宋文轩    时间: 2011-11-12 16:53
本帖最后由 宋文轩 于 2011-11-12 16:59 编辑

    files[i

]是File类型的,所以用isDirectory()方法是可以的  前面我用的是listFiles()方法 返回的是一个File类型的数组。 我这个代码加上我前面说的那个错误的地方就解决了




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