2013-01-11 76 views
0

我在Ubuntu 12.04中使用Netbeans IDE运行java代码。文件对象的空异常错误

我试图创建一个文件对象的路径名到文件目录,并使用方法listFiles()返回该文件目录下的路径名数组。

代码:

File allFile=new File("~/Desktop/matlab/CAT_00"); 
File[] fileList = allFile.listFiles(); 

然而,当我跑的代码,我得到一个异常声明

Exception in thread "main" java.lang.NullPointerException 
    at CatTest.main(CatTest.java:29) 
Java Result: 1 

这样看来,无论是我的ALLFILE对象包含null对象?我不太确定我自己。我试图检查我想要的目录路径是“〜/ Desktop/matlab/CAT_00”,它是正确的。我试着使用调试模式来检查这两行代码,发现listFiles()返回了这个异常错误。不过,我不明白为什么应该有一个空的异常错误,因为在CAT_00主目录下有文件和目录,我在第一个位置创建了File对象,因此应该返回这些文件和目录的路径名数组。

帮助非常感谢!

+1

为了更快提供更好的帮助,请发布[SSCCE](http://sscce.org/)。 –

+0

CAT_00是一个目录吗? –

+0

顺便说一句 - 更改'File allFile = new File(“〜/ Desktop/matlab/CAT_00”); ..'立即打印出'allFile.exists()'&'allFile.isDirectory()'。 –

回答

4

你得到一个NullPointerException的原因是因为当你运行listFiles()时,提供的路径实际上并不存在。

在Java中,您不能直接从〜/中引用文件,因为Java将文件路径看作是相对于它们运行位置的URL。在你的情况下,因为你在Eclipse中运行,所以它相对于你的Eclipse工作区。相反,你应该用的是

String homeDir = System.getProperty("user.home"); 
File allFile = new File(homeDir + "/Desktop/matlab/CAT_00"); 
File[] fileList = allFile.listFiles() 

什么System.getProperty("user.home")会做的就是让用户的绝对主目录路径,无论他们正在运行的操作系统。

+0

感谢nhydock和安德鲁!你们提供的帮助帮助我继续前进! =)) – user1968818