2011-08-08 77 views
1
import java.io.File; 


public class filesinDirectory { 

public static void main(String[] args) { 
    File path = new File("/home/vito/Desktop/Dir1"); 
    File[] files = path.listFiles(); 
    int length = files.length; // line 9 

    for (int i = 0; i != length; i++) { 
     if (files[i].isFile()) 
     System.out.println(i + ": " + files[i].getName()); 
    } 
} 
} 

与上面的代码,每次我尝试运行它时是未知的源我得到一个错误显示java.lang.NullPointerException在线9。但是我不知道来源是什么这个错误是。的“显示java.lang.NullPointerException”错误

+2

@sotl - 如果其中一个答案解决了您的问题,请单击旁边的复选标记以将其标记为接受的答案。 –

回答

0

的Javadoc说:

File.listFiles() 

Returns: 
    An array of abstract pathnames denoting the files and directories in the directory denoted by this abstract pathname. The array will be empty if the directory is empty. Returns null if this abstract pathname does not denote a directory, or 

如果发生I/O错误。

因此,目录不存在或发生I/O错误。

3

files为空。因此,当您拨打length属性时,您会收到NPE。

+0

非常感谢。这是目录名称的概率。我甚至没有想过要检查。我认为这表明这是一个问题,其中一个问题。 – sotI

5

根据的Javadoc File.listFiles()

如果此抽象路径名不表示一个目录,则此 方法返回null。

因此,Java是说/home/vito/Desktop/Dir1不是一个有效的目录。你有你的大写错误或什么?

0

根据的Javadoc的java.io.File:

返回NULL如果此抽象路径名不表示一个目录,或者发生I/O错误 。

必须是以前的方法调用有问题。

0

好了,让我们看看javadoc的说什么

public File[] listFiles()
返回抽象路径名表示此抽象路径名表示的目录中的文件的数组。 如果此抽象路径名不表示一个目录,则此方法返回null。否则返回一个File对象数组,其中一个用于目录中的每个文件或目录。表示目录本身和目录的父目录的路径名不包含在结果中。每个生成的抽象路径名都是使用File(File,String)构造函数从此抽象路径名构建而来的。因此,如果这个路径名是绝对的,那么每个结果路径名都是绝对的;如果此路径名是相对的,则每个生成的路径名将相对于相同的目录。

无法保证结果数组中的名称字符串将以任何特定顺序出现;他们并不特别保证按字母顺序出现。

返回:
一个抽象路径名数组,表示由此抽象路径名表示的目录中的文件和目录。如果目录为空,该数组将为空。 如果此抽象路径名不表示目录或发生I/O错误,则返回null。 抛出:
SecurityException - 如果存在安全管理器且其SecurityManager.checkRead(java.lang.String)方法否认读取目录 访问日期: 1.2

相关问题