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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 李东城 中级黑马   /  2013-2-7 04:14  /  2122 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

需求:就是把指定目录下的以.java结尾的文件的目录打印到一个指定的文本中。
也不知道哪里错了,编译和运行也没有报错,但结果就是出不来,请各位帮我解决一下。谢谢了!

public class IOTest {
        public static void main(String[] args) throws IOException {
                PrintWriter pw = new PrintWriter(new FileWriter("c:\\a.txt"),true);
                File f = new File("c:\\");
                toFile(f, pw);
        }

        public static void toFile(File dir, PrintWriter pw) throws IOException {
                File[] files = dir.listFiles();
                //通过递归判断
                for (File file : files) {
                        if (file.isDirectory()) {
                                toFile(file, pw);
                                //把指定目录下.java结尾的文件找出来,并打印到指定的文件中
                        } else if (file.getName().endsWith(".java")) {

                                //得到路径名
                                String str = file.getAbsolutePath();
                                pw.println(str);
                        }
                }
                pw.close();
        }
}

7 个回复

倒序浏览
代码没问题
File f = new File("c:\\");你换个路径测试下
回复 使用道具 举报
需求:就是把指定目录下的以.java结尾的文件的目录打印到一个指定的文本中。
也不知道哪里错了,编译和运行也没有报错,但结果就是出不来,请各位帮我解决一下。谢谢了!

public class IOTest {
        public static void main(String[] args) throws IOException {
                PrintWriter pw = new PrintWriter(new FileWriter("c:\\a.txt"),true);
                File f = new File("c:\\");
                toFile(f, pw);
        }

        public static void toFile(File dir, PrintWriter pw) throws IOException {
                File[] files = dir.listFiles();
                //通过递归判断
                for (File file : files) {
                        if (file.isDirectory()) {
                                toFile(file, pw);
                                //把指定目录下.java结尾的文件找出来,并打印到指定的文件中
                        } else if (file.getName().endsWith(".java")) {

                                //得到路径名
                                String str = file.getAbsolutePath();
                                pw.println(str);
                        }
                }
                pw.close();
        }
}


你不是要传的是Java文件吗?怎么改传txt文件了。。把文件类型改改。
希望对你有所帮助。

评分

参与人数 1技术分 +1 收起 理由
冯海霞 + 1

查看全部评分

回复 使用道具 举报
把pw.close()去掉,因为递归调用,你每次关闭后又打开,这样就把之前写入的内容给复写掉了~
回复 使用道具 举报
把pw.close()去掉,因为递归调用,你每次关闭后又打开,这样就把之前写入的内容给复写掉了~,不要在函数中关闭传进来的资源。资源在哪里定义就在哪里关闭

评分

参与人数 1技术分 +1 收起 理由
冯海霞 + 1

查看全部评分

回复 使用道具 举报
诚如楼上,把 pw.close()去掉;你把资源关掉了,第一个子文件夹的.java写完后,继续递归后面的.java文件就写不进去;

评分

参与人数 1技术分 +1 收起 理由
冯海霞 + 1

查看全部评分

回复 使用道具 举报
朱玉玺 发表于 2013-2-7 23:08
把pw.close()去掉,因为递归调用,你每次关闭后又打开,这样就把之前写入的内容给复写掉了~ ...

嗯谢谢了啊,是这样的
回复 使用道具 举报
朱玉玺 发表于 2013-2-7 23:08
把pw.close()去掉,因为递归调用,你每次关闭后又打开,这样就把之前写入的内容给复写掉了~ ...

嗯谢谢了啊,是这样的
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马