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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 张金铎 中级黑马   /  2013-4-28 16:04  /  1827 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

高手请看,这个编译的时候没有问题,但是在运行的时候就报错,提示空指针异常

import java.io.*;
public class TestEx501 {
        public static void main(String args[]) {
                File dir = new File("d://ex");
                Filter filter = new Filter("java");
                System.out.println("list java files in directory " + dir);
                String files[] = dir.list(filter);
                for (int i = 0; i < files.length; i++) {
                        File f = new File(dir, files[i]);
                        if (f.isFile())
                                System.out.println("file " + f);
                        else
                                System.out.println("sub directory " + f);
                }
        }
}




评分

参与人数 1技术分 +2 收起 理由
黄玉昆 + 2

查看全部评分

5 个回复

倒序浏览
首先我不知道Filter 和 FilenameFilter有什么关系;
但是通过API文档可以查到
String[] list(FilenameFilter filter)
          返回一个字符串数组,这些字符串指定此抽象路径名表示的目录中满足指定过滤器的文件和目录。
这么一段话。list中应该传入的是FilenameFilter类或者其子类。
Filter filter = new Filter("java");
String files[] = dir.list(filter); 这两句把我给凌乱了啊....
参数类型都没传对你让我情以何堪啊
下面有一个代码:
  1. package org.exam5a;

  2. import java.io.File;
  3. import java.io.FilenameFilter;

  4. public class T4 {

  5.         public static void main(String[] args)throws Exception {
  6.                 File f = new File(".");
  7.                 MyFilter filter = new MyFilter(".java");
  8.                 String[] files = f.list(filter);
  9.                 for(String a:files){
  10.                         System.out.println(a);
  11.                 }
  12.         }
  13.         static class MyFilter implements FilenameFilter{
  14.                 private String type;
  15.                 public MyFilter(String type){
  16.                         this.type = type;
  17.                 }
  18.                 public boolean accept(File dir,String name){
  19.                         return name.endsWith(type);
  20.                 }
  21.         }
  22. }
复制代码
希望你会懂...
其实我也不懂
我是赚经验和金币的

你的能编译过去...
我的为毛贴上去编译器就报错了

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

回复 使用道具 举报
对Filter不太了解, Filter是这么用吗?
楼主可以试试这个:
  1. FilenameFilter filter = new FilenameFilter(){

  2.                                         @Override
  3.                                         public boolean accept(File dir, String name) {
  4.                                                 // TODO Auto-generated method stub
  5.                                                 return false;
  6.                                         }
  7.                        
  8.                 };
复制代码

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

回复 使用道具 举报
我后来发现,是因为我的d盘中没有ex这个文件夹,导致的异常,在d盘中新建ex文件夹后,异常消失
回复 使用道具 举报
ex文件夹在你的d盘上没有建立{:soso_e100:}
回复 使用道具 举报

如果问题未解决,请继续追问,如果问题解决了,请将分类改为“已解决”,谢谢
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马