我在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对象包含空对象?我自己也不太确定。我试着检查我想要的目录路径是"~/Desktop/matlab/CAT_00",它是正确的。我尝试使用调试模式来检查这2行代码,发现listFiles()返回此异常错误。然而,我不明白为什么会有一个空异常错误,因为在CAT_00主目录下有文件和目录,我在第一个地方创建了File对象,因此应该为这些文件和目录返回一个路径名数组。
帮助是非常感激的!
您得到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")
将获取用户的绝对主目录路径,无论他们运行的是什么操作系统