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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 赵学刚 中级黑马   /  2012-12-9 00:35  /  1379 人查看  /  8 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 赵学刚 于 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. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
古银平 + 1 神马都是浮云

查看全部评分

8 个回复

倒序浏览
27行
~~~~~~~~~~~~~~~~~~~~~~~~~
回复 使用道具 举报
不好意思
27行
~~~~~~~~~~~~~~~~~~~~~~~~~
能说明白点吗,27是方法调用错了还是参数错了呢? 我感觉都对啊  
回复 使用道具 举报
那就是你的else语句块没有执行,要么你的文件路径写的有问题,要么你的目录下就没有.exe文件
回复 使用道具 举报
嗯  else 确实没执行  不过目录那些都正确   问哈问题在哪?
要么你的文件路径写的有问题,要么你的目录下就没有.exe文件
回复 使用道具 举报
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) {   就没事了
回复 使用道具 举报
嗯  谢谢    我那个加了也还是一样的   
回复 使用道具 举报
endsWith(".exe");//不是*.exe
回复 使用道具 举报
{:soso_e100:}{:soso_e179:}谢谢
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马