黑马程序员技术交流社区

标题: 递归获取文件目录清单出错 [打印本页]

作者: 赵学刚    时间: 2012-12-9 00:35
标题: 递归获取文件目录清单出错
本帖最后由 赵学刚 于 2012-12-9 17:44 编辑

问题:为什么得到的list.size()是0呢,麻烦大家帮我看看哪里写错了,谢谢
  1. public class FileTest {

  2.         /**
  3.          * 需求:把java文件目录清单输出到指定文件中
  4.          * 思路:1、对指定的目录进行递归
  5.          *       2、获取递归过程中所有的java文件路径
  6.          *       3、将这些路径存储到集合中
  7.          *       4、将集合中的数据输出到指定的文件中
  8.          * @throws IOException
  9.          */
  10.         public static void main(String[] args) throws IOException {
  11.                   
  12.                   File dir=new File("D:\\搜狗输入法");
  13.                  List<File> list=new ArrayList<File>();
  14.                  getFileList(dir,list);
  15.       System.out.println(list.size()) ;
  16.        writeToFile(list,new File("f:\\123.txt").toString());


  17.         }
  18.    public  static void  getFileList(File dir ,List<File> list){
  19.            File [] file=dir.listFiles();
  20.            for( File f: file ){
  21.                    if(f.isDirectory())
  22.                            getFileList(f, list);
  23.                    else {
  24.                            if(f.getName().endsWith("*.exe"))
  25.                            list.add(f);
  26.                    }
  27.            }
  28.    }
  29.    
  30.   public static void writeToFile(List<File> list, String fileList) throws IOException{
  31.             BufferedWriter bw=new BufferedWriter(new FileWriter(fileList));
  32.                for(File f: list){
  33.                        String path=f.getAbsolutePath();
  34.                        bw.write(path);
  35.                        bw.newLine();
  36.                        bw.flush();
  37.                }
  38.          
  39.           bw.close();
  40.   }
  41. }
复制代码

作者: 小灰灰    时间: 2012-12-9 01:12
27行
~~~~~~~~~~~~~~~~~~~~~~~~~
作者: 赵学刚    时间: 2012-12-9 01:41
不好意思
27行
~~~~~~~~~~~~~~~~~~~~~~~~~
能说明白点吗,27是方法调用错了还是参数错了呢? 我感觉都对啊  
作者: yingying    时间: 2012-12-9 08:28
那就是你的else语句块没有执行,要么你的文件路径写的有问题,要么你的目录下就没有.exe文件
作者: 赵学刚    时间: 2012-12-9 12:30
嗯  else 确实没执行  不过目录那些都正确   问哈问题在哪?
要么你的文件路径写的有问题,要么你的目录下就没有.exe文件

作者: 田宇鹤    时间: 2012-12-9 13:31
public static void getAllile(File file, ArrayList<File> arr) {
                //遍历当前目录
                File[] fileArray = file.listFiles();
                if(fileArray != null) {
                        for (File f : fileArray) {
                                //判断如果是目录就递归
                                if(f.isDirectory()) {
                                        getAllile(f,arr);
                                }
                                else{
                                        //如果是文件,并且以java结尾,就添加到集合中
                                        if(f.getName().endsWith(".mp3")) {
                                        arr.add(f);
                                        }
                                }
                        }
                }       
        }
}
我写这个时出过空指针异常 , 后来加if判断        if(fileArray != null) {   就没事了

作者: 赵学刚    时间: 2012-12-9 15:20
嗯  谢谢    我那个加了也还是一样的   
作者: 种生祥    时间: 2012-12-9 15:21
endsWith(".exe");//不是*.exe
作者: 赵学刚    时间: 2012-12-9 17:43
{:soso_e100:}{:soso_e179:}谢谢




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