黑马程序员技术交流社区

标题: 代码求解 [打印本页]

作者: 李东城    时间: 2013-2-7 04:14
标题: 代码求解
需求:就是把指定目录下的以.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();
        }
}
作者: 谢波    时间: 2013-2-7 15:29
代码没问题
File f = new File("c:\\");你换个路径测试下
作者: pzfpang449    时间: 2013-2-7 19:17
需求:就是把指定目录下的以.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文件了。。把文件类型改改。
希望对你有所帮助。
作者: 朱玉玺    时间: 2013-2-7 23:08
把pw.close()去掉,因为递归调用,你每次关闭后又打开,这样就把之前写入的内容给复写掉了~
作者: 朱玉玺    时间: 2013-2-7 23:09
把pw.close()去掉,因为递归调用,你每次关闭后又打开,这样就把之前写入的内容给复写掉了~,不要在函数中关闭传进来的资源。资源在哪里定义就在哪里关闭
作者: 李东城    时间: 2013-2-8 15:00
朱玉玺 发表于 2013-2-7 23:08
把pw.close()去掉,因为递归调用,你每次关闭后又打开,这样就把之前写入的内容给复写掉了~ ...

嗯谢谢了啊,是这样的
作者: 李东城    时间: 2013-2-8 15:05
朱玉玺 发表于 2013-2-7 23:08
把pw.close()去掉,因为递归调用,你每次关闭后又打开,这样就把之前写入的内容给复写掉了~ ...

嗯谢谢了啊,是这样的




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