黑马程序员技术交流社区

标题: 高手请看 [打印本页]

作者: 张金铎    时间: 2013-4-28 16:04
标题: 高手请看
高手请看,这个编译的时候没有问题,但是在运行的时候就报错,提示空指针异常

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





作者: 刘胜寒    时间: 2013-4-28 16:35
首先我不知道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. }
复制代码
希望你会懂...
其实我也不懂
我是赚经验和金币的

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

作者: cowthan    时间: 2013-4-28 16:38
对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.                 };
复制代码

作者: 张金铎    时间: 2013-5-6 23:24
我后来发现,是因为我的d盘中没有ex这个文件夹,导致的异常,在d盘中新建ex文件夹后,异常消失
作者: Sword    时间: 2013-5-7 14:27
ex文件夹在你的d盘上没有建立{:soso_e100:}
作者: 黄玉昆    时间: 2013-5-7 21:28

如果问题未解决,请继续追问,如果问题解决了,请将分类改为“已解决”,谢谢




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