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

时间:2013-11-23 03:38:38

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

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

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的其他计算机上,我从未发生过这种情况。任何人都可以解决这个难题吗?

1 个答案:

答案 0 :(得分:1)

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

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

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

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

这应该有用。

编辑关于NullPointerException的{​​{1}}

的java API doc状态
  

返回:   用于读取资源的输入流,如果找不到资源,则为null

getResourceAsStream会抛出Scanner

参考javadocs