黑马程序员技术交流社区

标题: 跪求,这是咋回事 [打印本页]

作者: 我来也    时间: 2015-4-10 20:59
标题: 跪求,这是咋回事

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);
                        }
                }
        }

}

作者: 四季    时间: 2015-4-10 22:38
- -。问题呢。。
作者: lf027    时间: 2015-4-10 22:54
其实我想说不带这样发帖的啊
作者: 我来也    时间: 2015-4-10 22:59
运行时结果老错,但没有语法错误啊,运行不来,求指点
作者: 看丶小胖    时间: 2015-4-10 23:20
请问一下,你晕运行错误能给一下么?你这样提问很不负责
作者: sunshine丶朱    时间: 2015-4-11 11:16
我就看看不说话~
作者: long_yihuan    时间: 2015-4-11 11:20
目前看不懂。。。
作者: xlunaer    时间: 2015-4-11 11:57
试了一下,输出list大小没错,如果你输出list大小有错,把错误信息发一下,如果没输出结果,是因为兄弟,你下面用了一个递归,上面查找整个D盘,你D盘文件应该不少吧,这样不断递归找txt要多慢有多慢,你换一个小一点的文件夹试一试
作者: 我来也    时间: 2015-4-11 13:19
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)
作者: kitboxer    时间: 2015-4-11 14:52
测试了一下,没抛异常啊。你这个怎么会空指针异常呢?
debug一下,看看那里出问题了
还有你的if()语句用了简写形式,容易看错
作者: 龙腾浩少    时间: 2015-4-11 14:55
一句注释没有,不是好习惯哦:lol
作者: 挥斥方遒    时间: 2015-4-11 15:38
我也很绕。。。。。。没看多大明白,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);
                        }
                }
        }

作者: wocan23    时间: 2015-4-11 16:58
主函数调用的那个方法是空函数体,所以在D盘下没能生成出来那个文件,调用时把toString()去掉,空指针异常没运行出来,除非你的电脑没有D盘
作者: mah707    时间: 2015-4-11 17:56
可以把返回值设为List<File>啊,可以节省主类的开销




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