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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 我来也 中级黑马   /  2015-4-10 20:59  /  897 人查看  /  22 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文


import java.io.*;
import java.util.ArrayList;
import java.util.List;
public class JavaFilelist {

        public static void main(String[] args) throws IOException{
       
                File dir=new File("D:\\");
                List<File> list=new ArrayList<File>();
                fileToList(dir,list);
                File file=new File("dir","list.txt");
                writeToFile(list,file.toString());
                System.out.println(list.size());
        }
        private static void writeToFile(List<File> list, String string) {
                // TODO Auto-generated method stub
               
        }
        public static void writeToFile(List<File> list,File dir)throws IOException{
                BufferedWriter bufw=null;
                try
                {
                        bufw=new BufferedWriter(new FileWriter("D:\\java.txt"));
                        for(File f:list){
                                String path=f.getAbsolutePath();
                                bufw.write(path);
                                bufw.newLine();
                                bufw.flush();
                        }
                }
         catch(IOException e){
                 throw e;
         }
         finally
         {
                 try
                 {
                         if(bufw!=null)
                                 bufw.close();
                 }
                 catch(IOException e)
                 {
                         throw e;
                 }
         }
        }
        public static void fileToList(File dir,List<File> list){
                File [] files=dir.listFiles();
                for(File file:files){
                        if(file.isDirectory())
                                fileToList(file,list);
                        else{
                                if(file.getName().endsWith(".txt"))
                                        list.add(file);
                        }
                }
        }

}

22 个回复

倒序浏览
- -。问题呢。。
回复 使用道具 举报
其实我想说不带这样发帖的啊

点评

我忘了给错误提示了,不好意思啊  发表于 2015-4-11 13:27
我错了  发表于 2015-4-11 13:12
回复 使用道具 举报
运行时结果老错,但没有语法错误啊,运行不来,求指点

点评

我忘了给错误提示了,不好意思啊  发表于 2015-4-11 13:24
Exception in thread "main" java.lang.NullPointerException at JavaFilelist.fileToList(JavaFilelist.java:50) at JavaFilelist.fileToList(JavaFilelist.java:52) at JavaFilelist.main(JavaFilelist.java:11   发表于 2015-4-11 13:22
回复 使用道具 举报
请问一下,你晕运行错误能给一下么?你这样提问很不负责

点评

我忘了给错误提示了,不好意思啊  发表于 2015-4-11 13:23
Exception in thread "main" java.lang.NullPointerException at JavaFilelist.fileToList(JavaFilelist.java:50) at JavaFilelist.fileToList(JavaFilelist.java:52) at JavaFilelist.main(JavaFilelist.java:11   发表于 2015-4-11 13:20
回复 使用道具 举报
我就看看不说话~

点评

求教,你的技术分是咋获得的啊,每天都干怎么做的啊  发表于 2015-4-11 13:17
回复 使用道具 举报
目前看不懂。。。

点评

恩,共同努力  发表于 2015-4-11 13:15
回复 使用道具 举报
试了一下,输出list大小没错,如果你输出list大小有错,把错误信息发一下,如果没输出结果,是因为兄弟,你下面用了一个递归,上面查找整个D盘,你D盘文件应该不少吧,这样不断递归找txt要多慢有多慢,你换一个小一点的文件夹试一试

点评

谢谢啊,  发表于 2015-4-11 13:14
回复 使用道具 举报
Exception in thread "main" java.lang.NullPointerException
        at JavaFilelist.fileToList(JavaFilelist.java:50)
        at JavaFilelist.fileToList(JavaFilelist.java:52)
        at JavaFilelist.main(JavaFilelist.java:11)
回复 使用道具 举报
测试了一下,没抛异常啊。你这个怎么会空指针异常呢?
debug一下,看看那里出问题了
还有你的if()语句用了简写形式,容易看错
回复 使用道具 举报
一句注释没有,不是好习惯哦:lol
回复 使用道具 举报
我也很绕。。。。。。没看多大明白,list是从哪来的??????


public static void fileToList(File dir,List<File> list){
                        //给files集合赋值  即是dir中的所有文件
                File [] files=dir.listFiles();
                //遍历files集合中的元素 赋给file
                for(File file:files){
                                //如果file是目录
                        if(file.isDirectory())
                                        //重新调用自身方法。但是这个list是从哪来的?????????
                                fileToList(file,list);
                        else{
                                if(file.getName().endsWith(".txt"))
                                        list.add(file);
                        }
                }
        }
回复 使用道具 举报
主函数调用的那个方法是空函数体,所以在D盘下没能生成出来那个文件,调用时把toString()去掉,空指针异常没运行出来,除非你的电脑没有D盘
回复 使用道具 举报
可以把返回值设为List<File>啊,可以节省主类的开销
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马