java - 具有正确路径的 netbeans 空指针异常

标签 java netbeans java.util.scanner java-io filenotfoundexception

这是我第一次在 stackoverflow 上发帖。我有一个关于当我尝试从 Netbeans IDE 7.4 中的通用文本文件读取数据时遇到的一系列错误的问题。我使用的是带有 Mac OS X Mavericks 的 2009 iMac。

import java.util.Scanner;
import java.io.File;
public class two {
    public static void main(String[] args) throws Exception
    {

        System.out.println("Directory: "+System.getProperty("user.dir"));
        File f = new File("newfile.dat");
        Scanner s = new Scanner(f);

    }

}

这段代码将返回这组错误:

Directory: /Users/omavine/Desktop/aPlusComputerScience
Exception in thread "main" java.io.FileNotFoundException: newfile.dat (No such file or directory)
    at java.io.FileInputStream.open(Native Method)
    at java.io.FileInputStream.<init>(FileInputStream.java:143)
    at java.util.Scanner.<init>(Scanner.java:656)
    at apluscomputerscience.two.main(two.java:22)
    at apluscomputerscience.APlusComputerScience.main(APlusComputerScience.java:21)

Java Result: 1

这表明我根本没有在正确的路径中搜索该文件,但是,当我将文件名与绝对路径进行比较时:

        System.out.println("Directory: "+System.getProperty("user.dir"));
        File f = new File("newfile.dat");
        System.out.println("Path: "+f.getAbsolutePath());

那么输出如下:

Directory: /Users/omavine/Desktop/aPlusComputerScience
Path: /Users/omavine/Desktop/aPlusComputerScience/newfile.dat

这将表明(对我来说)无论我是否使用显式路径名查找文件,都会在正确的位置搜索该文件。

但是,当我尝试构建扫描程序时,(即使使用绝对路径名):

Directory: /Users/omavine/Desktop/aPlusComputerScience
Path: /Users/maven/Desktop/aPlusComputerScience/newfile.dat
Exception in thread "main" java.io.FileNotFoundException: /Users/omavine/Desktop/aPlusComputerScience/newfile.dat (No such file or directory)
    at java.io.FileInputStream.open(Native Method)
    at java.io.FileInputStream.<init>(FileInputStream.java:143)
    at java.util.Scanner.<init>(Scanner.java:656)
    at apluscomputerscience.two.main(two.java:23)
    at apluscomputerscience.APlusComputerScience.main(APlusComputerScience.java:21)
Java Result: 1

还是同样的错误。有趣的是,尝试使用以下方法构建扫描仪:

File f = new File("newfile.dat");
Scanner s = new Scanner(f.getClass().getResourceAsStream("newfile.dat"));

返回:

Directory: /Users/omavine/Desktop/aPlusComputerScience
Path: /Users/omavine/Desktop/aPlusComputerScience/newfile.dat
Exception in thread "main" java.lang.NullPointerException
    at java.io.Reader.<init>(Reader.java:78)
    at java.io.InputStreamReader.<init>(InputStreamReader.java:72)
    at java.util.Scanner.<init>(Scanner.java:608)
    at apluscomputerscience.two.main(two.java:23)
    at apluscomputerscience.APlusComputerScience.main(APlusComputerScience.java:21)
Java Result: 1

(无论出于何种原因,使用 getClass().getResourceAsStream() 读取文件似乎都会返回空指针异常。)

我希望能够读取我的家用计算机上的文件。我在其他装有 JCreator IDE 的计算机上从未发生过这种情况。有人能解决这个困境吗?

最佳答案

输出清楚地表明您正在查看不同的目录。

Directory: /Users/omavine/Desktop/aPlusComputerScience
Path: /Users/maven/Desktop/aPlusComputerScience/newfile.dat

工作目录位于omavine的桌面中。您的文件位于 maven 的桌面中。 不要给出相对路径,而是尝试给出文件的实际路径。

File f = new File("/Users/maven/Desktop/aPlusComputerScience/newfile.dat");

这应该有效。

编辑:关于getResourceAsStreamNullPointerException

java API 文档指出

Returns: An input stream for reading the resource, or null if the resource could not be found

并且扫描器抛出NullPointerException

引用javadocs

关于java - 具有正确路径的 netbeans 空指针异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20158217/

相关文章:

php - 您能否发布有关如何将 PHPUnit 与 NetBeans 结合使用的示例?

java - 为程序员而不是用户突出显示

Java 在通过 Windows 远程桌面 (tsclient) 写入时创建巨大的文件

eclipse - 添加到 Netbeans/Eclipse 中的语言语法

Java扫描仪: "0" is not a double

java - 如何将分隔符设置为 "\\p{Punct}"不包括引号?

java - 我的程序在没有扫描字符串的情况下终止

java - 如何在 Java 中向所有线程客户端发送数据?

java - 为什么表达式语言优于 Scriplet?

netbeans - 有没有一种方法可以使Netbeans文件上传不会因单个错误而失败?