eclipse中的java.io.FileNotFoundException

码:

import java.io.*; import java.util.Scanner; public class Driver { private int colorStrength; private String color; public static void main(String[] args) throws IOException { String line, file = "strength.txt"; File openFile = new File(file); Scanner inFile = new Scanner(openFile); while (inFile.hasNext()) { line = inFile.nextLine(); System.out.println(line); } inFile.close(); } } 

这是我为一个类编写的程序的一小部分(我知道这两个私有属性尚未使用)但是当我尝试使用strength.txt文件运行它时,我收到以下错误:

例外:

 Exception in thread "main" java.io.FileNotFoundException: strength.txt (The system cannot find the file specified) at java.io.FileInputStream.open(Native Method) at java.io.FileInputStream.(Unknown Source) at java.util.Scanner.(Unknown Source) at Driver.main(Driver.java:14) 

如果有人用Eclipse可以帮我解决这个问题,我将不胜感激!

您使用了对于项目执行的相对文件路径。

如果您想这样做,只需将strength.txt文件放在项目的基目录中即可。 像这样:

在此处输入图像描述

或者,您可以引用系统上的absolute文件路径。 例如,使用:

视窗:

C:/dev/myproject/strength.txt

苹果/ Unix的:

/Users/username/dev/strength.txt

(或者不管完整路径)。

做这个

 System.out.println(openFile.getAbsolutePath()); 

它将显示JVM期望找到该文件的位置以及它是否是您期望的文件夹。相应地放置文件或给出确切的位置

使用此选项可查看系统用于到达相对路径的文件路径

  System.out.print(System.getProperty("user.dir")); 

然后确保相对路径紧跟此路径。

您也可以通过执行将其转换为字符串

 String filePath = System.getProperty("user.dir"); 

然后你可以将它添加到文件路径的开头,就像这样,

  ImageIcon imageIconRefVar = new ImageIcon(filePath + "/imagepathname"); 

当我在路径中使用它时,我发现这解决了我的问题(这看起来很奇怪,因为它应该是它所在的位置,但它有效)

您使用了相对于项目执行的相对文件路径。

如果这适合您,您可以通过以下方式将执行目录从项目根目录更改为二进制目录:

  1. “运行” – >“运行配置”
  2. 在“参数”选项卡中,找到“工作目录”设置。
  3. 从“默认”切换到“其他”。
  4. 单击“工作区”按钮,在弹出窗口中选择项目,然后单击“确定”; 这将带给你像$(workspace_loc:proj-1)
  5. 在其末尾添加“/ bin”; 保存配置。

我需要这个,而不是简单地将文件放在项目根目录中,当我做任务时,教授需要特定的文件层次结构; 另外,这比绝对路径更便携。

在基本目录中创建一个文件夹,将其命名为“res”。 将文件放在“res”文件夹中。

使用String file = ".\\res\\strength.txt"; 引用文件的位置。

您应该使用资源文件夹来存储您在程序中使用的所有文件(一个好的做法)。

并从根目录中引用该文件。 因此该文件存在于包中。