文件对象的空例外错误

时间:2013-01-11 04:11:22

标签: java file nullpointerexception runtime-error

我在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 个答案:

答案 0 :(得分: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")将做的是获取用户的绝对主目录路径,无论他们运行的操作系统如何。