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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 盛光富 中级黑马   /  2012-5-14 19:15  /  1713 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

从键盘输入接收一个文件夹路径, 将该文件夹下的所有.java文件的文件名写入到java.txt文件中
看了N次了,还是没有看出来哪里错了,高手救急啊
public class Lesson {
       public static void main(String[] args) throws IOException {
                System.out.println("请输入一个路径:");
                   File dir = getDir();

                  String[] arr = dir.list();
                  BufferedWriter bw = new BufferedWriter(new FileWriter("java.txt"));
                   for (String name : arr)
                            if (name.endsWith(".java")) {
                                  bw.write(name);
                                  bw.newLine();
                                  }
                        bw.close();
                 }

     public static File getDir() throws IOException {
                BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
                while (true) {
                           File file = new File(br.readLine());
                            if (!file.exists())
                                       System.out.print("您输入的路径不存在,请重新输入");
                            else if (!file.isDirectory())
                                      System.out.println("您输入的不是文件夹路径,请重新输入");
                             else
                                  return file;
                }
      }
}

评分

参与人数 1技术分 +1 收起 理由
贠(yun)靖 + 1

查看全部评分

3 个回复

倒序浏览
for (String name : arr)
                    if (name.endsWith(".java")) {
                             bw.write(name);
                             bw.newLine();
                    }
                  bw.close();
}
你的输出流怎么在foreach语句中关闭了呢,那么程序只循环一次就把流关了,之后就没办法再输出了。
楼主是想在该语句处刷新吗?
建议使用bw.flush();
然后在for循环结束以后,关闭流就行了。
楼主可以检验一下。

评分

参与人数 1技术分 +1 收起 理由
贠(yun)靖 + 1

查看全部评分

回复 使用道具 举报
首先,你知道你存放的路径在哪吗?是在你的项目的跟目录下。
然后,你的代码能够实现找到文件夹的下一层的JAVA文件  
但是比如 文件夹里没有java文件  但是文件夹的文件里有   你的代码就不能实现了  这个要用递归来实现
回复 使用道具 举报
云惟桉 发表于 2012-5-14 19:24
for (String name : arr)
                    if (name.endsWith(".java")) {
                          ...

谢谢了,看了三四遍没有注意到这个位置郁闷啊
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马