2011-09-03 24 views
3

我在Netbeans中有一个Java应用程序项目。我只有一堂课。 我尝试这样做Netbeans中的FileNotFoundException

FileReader fr = new FileReader("sal.html"); 

我有同样的包下的文件sal.html。但我运行时出现此错误:

Errorjava.io.FileNotFoundException: sal.html (The system cannot find the file specified) 
+0

当我从控制台手动运行它运行良好! – John

回答

3

我的猜测是Netbeans正在从项目的根文件夹中调用JVM。引用File Javadoc的一部分:

默认情况下,java.io包中的类总是针对当前用户目录解析相对路径名。该目录由系统属性user.dir命名,通常是调用Java虚拟机的目录。

要验证相对路径解析您可以尝试:

System.out.println(System.getProperty("user.dir")); 
System.out.println(new File("sal.html").getAbsolutePath()); 

然后,您可以将您的文件到哪里Java是寻找它。很可能您的项目的根文件夹为

您也可以考虑使用类加载器使用getClass().getResourceAsStream("sal.html");作为资源内的资源读取文件。这是访问资源的首选方式,因为您不必再​​担心绝对路径和相对路径。如果某个资源位于您的类路径中,则可以访问它。有关更多信息,请参阅this answer

+0

多一个疑问!您说JVM调用的目录存储在user.dir系统属性中。我运行了上面两行代码,并得到了相同的输出。 'C:\ Users \ Onie \ Documents \ NetBeansProjects \ Testapp \ sal.html' 'C:\ Users \ Onie \ Documents \ NetBeansProjects \ Testapp'所以它应该是正确的?我也试过'新的FileReader(“C:\\ Users \\ Onie \\ Documents \\ NetBeansProjects \\ Testapp \\ sal.html”);'并且失败! – John

+0

它失败了什么错误? –

+0

同样的错误。 'Errorjava.io.FileNotFoundException:C:\ Users \ Onie \ Documents \ NetBeansProjects \ Testapp \ sal.html(系统找不到指定的文件)' – John

0

我认为你的问题是在文件的相对路径中。尝试声明FileReader文件的完整路径。

0

FileNotFoundException表示找不到文件。

netbeans的build文件夹与没有文件sal.html的地方不同。

尝试使用绝对路径代替使用相对路径。

1

将您的文件放到主项目文件夹中。不是像src或bin等任何子文件夹,然后它会检测到你的文件。

0

这不是“文件未找到”问题。 这是因为每个班级组织自己的资源(让它文件,图像等),只能通过资源加载声明这是如下访问:

的InputStream在= this.getClass()。的getResourceAsStream( “sal.html”);

唯一的解决方法是您将得到一个InputStream而不是一个文件。 希望这有助于。

1

在Netbeans中点击文件视图。将sal.html移至项目文件夹。这样你会看到像这样

- JavaProject 
    + build 
    + lib 
    + nbproject 
    + src 
    + build.xml 
    manifest.mf 
    sal.html 

现在

FileReader fr = new FileReader("sal.html"); 

会工作。

1
System.out.println(System.getProperty("user.dir")); 
System.out.println(new File("sal.html").getAbsolutePath()); 

然后它会显示JVM从哪里检索文件。通常用于/home/username/NetbeansProjects/ApplicationName/中的linux。

把你的资源或文件到这个路径