我在Netbeans中有一个java应用程序项目。我只有一节课。 我试着这样做
FileReader fr = new FileReader("sal.html");
我在同一个包下有sal.html文件。但是当我跑步时我得到了这个错误:
Errorjava.io.FileNotFoundException: sal.html (The system cannot find the file specified)
答案 0 :(得分:4)
我的猜测是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。
答案 1 :(得分:1)
将您的文件放到主项目文件夹中。不要像src或bin等任何子文件夹那么它会检测你的文件。
答案 2 :(得分:1)
单击Netbeans中的文件视图。将sal.html移动到项目文件夹。这样你就会看到它
- JavaProject
+ build
+ lib
+ nbproject
+ src
+ build.xml
manifest.mf
sal.html
现在
FileReader fr = new FileReader("sal.html");
会奏效。
答案 3 :(得分:1)
System.out.println(System.getProperty("user.dir"));
System.out.println(new File("sal.html").getAbsolutePath());
然后它将显示JVM从哪里检索文件。通常用于/home/username/NetbeansProjects/ApplicationName/
中的linux。
将您的资源或文件放到此路径
答案 4 :(得分:0)
我认为你的问题出在文件的相对路径上。尝试使用文件的完整路径声明FileReader
。
答案 5 :(得分:0)
FileNotFoundException
表示找不到文件。
如果没有文件sal.html,netbeans的build文件夹会有所不同。
尝试使用绝对路径代替使用相对路径。
答案 6 :(得分:0)
这不是“未找到文件”问题。 这是因为每个类都拥有自己的资源(让它成为文件,图像等),只能通过资源加载器语句访问,如下所示:
InputStream in = this.getClass()。getResourceAsStream(“sal.html”);
唯一的解决方法是获取InputStream而不是文件。 希望这会有所帮助。