use*_*818 1 java runtime-error file nullpointerexception
我在 Ubuntu 12.04 中使用 Netbeans IDE 运行 Java 代码。
我正在尝试创建一个带有文件目录路径名的文件对象,并使用方法 listFiles() 返回该文件目录下的路径名数组。
编码:
File allFile=new File("~/Desktop/matlab/CAT_00");
File[] fileList = allFile.listFiles();
Run Code Online (Sandbox Code Playgroud)
但是,当我运行代码时,我收到一个异常声明
Exception in thread "main" java.lang.NullPointerException
at CatTest.main(CatTest.java:29)
Java Result: 1
Run Code Online (Sandbox Code Playgroud)
所以看起来我的 allFile 对象包含空对象?我自己也不确定。我尝试检查我想要的目录路径“~/Desktop/matlab/CAT_00”,它是正确的。我尝试使用调试模式检查这两行代码,发现 listFiles() 返回了此异常错误。但是我不明白为什么应该有一个空异常错误,因为在 CAT_00 主目录下有文件和目录,我在第一个地方创建了 File 对象,因此应该返回这些文件和目录的路径名数组。
非常感谢帮助!
小智 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()
Run Code Online (Sandbox Code Playgroud)
什么System.getProperty("user.home")会做的就是让用户的绝对主目录路径,无论他们正在运行的操作系统。