我在Netbeans中有一个java应用程序项目。我只有一节课。我试着做这个
FileReader fr = new FileReader("sal.html");
我在同一个包下有sal.html文件。但当我运行时,我会遇到这个错误
Errorjava.io.FileNotFoundException: sal.html (The system cannot find the file specified)
我的猜测是Netbeans正在从项目的根文件夹中调用JVM。引用文件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");
的包内的资源。这是访问资源的首选方式,因为您不再需要担心绝对路径与相对路径。如果类路径中有资源,您可以访问它。有关更多信息,请参阅此答案。
将文件放入主项目文件夹。不指向任何子文件夹,如src,或bin等。然后它会检测到你的文件。
点击Netbeans中的文件视图。将sal.html移动到项目文件夹中。这样你就会看到它像这个
- JavaProject
+ build
+ lib
+ nbproject
+ src
+ build.xml
manifest.mf
sal.html
现在
FileReader fr = new FileReader("sal.html");
将起作用。
System.out.println(System.getProperty("user.dir"));
System.out.println(new File("sal.html").getAbsolutePath());
然后它将显示JVM从何处检索文件。通常用于/home/username/NetbeansProjects/ApplicationName/
中的linux。
将您的资源或文件放入此路径
我认为问题出在文件的相对路径上。尝试使用文件的完整路径声明FileReader
。
FileNotFoundException
表示找不到文件。
netbeans的构建文件夹与没有sal.html文件的地方不同。
尝试使用绝对路径代替相对路径。
这不是"找不到文件"的问题。这是因为每个类都有自己的资源(可以是文件、图像等(,只能通过资源加载器语句访问,如下所示:
InputStream in=this.getClass((.getResourceAsStream("sal.html"(;
唯一的解决方案是,您将获得一个InputStream而不是一个文件。希望这能有所帮助。