繁体   English   中英

Netbeans中的FileNotFoundException

[英]FileNotFoundException in Netbeans

我在Netbeans中有一个java应用程序项目。 我只有一节课。 我试着这样做

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

我在同一个包下有sal.html文件。 但是我跑的时候遇到这个错误:

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

我的猜测是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");将文件读取为包内的资源getClass().getResourceAsStream("sal.html"); 这是访问资源的首选方式,因为您不再需要担心绝对路径和相对路径。 如果资源在您的类路径中,您可以访问它。 请参阅此答案了解更多信息

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

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

将您的资源或文件放在此路径中

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

单击Netbeans中的文件视图。 将sal.html移动到项目文件夹。 这样你会看到它

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

现在

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

将工作。

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

FileNotFoundException表示找不到文件。

在没有文件sal.html的情况下,netbeans的构建文件夹是不同的。

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

这不是“找不到文件”问题。 这是因为每个类都拥有自己的资源(让它成为文件,图像等),只能通过资源加载器语句访问,如下所示:

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

唯一的解决方法是获取InputStream而不是文件。 希望这可以帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM