1

我在 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”,它是正确的。我尝试使用调试模式检查这两行代码,发现 listFiles() 返回了这个异常错误。但是我不明白为什么应该有一个空异常错误,因为 CAT_00 主目录下有文件和目录,我在第一个地方创建了 File 对象,因此应该返回这些文件和目录的路径名数组。

非常感谢您的帮助!

4

1 回答 1

5

您收到 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")的是获取用户的绝对主目录路径,无论他们运行的是什么操作系统。

于 2013-01-11T04:23:50.953 回答