Eclipse无法在File对象使用情况下找到文件 - FileNotFoundException

时间:2012-07-20 11:43:43

标签: java file filenotfoundexception

当我尝试使用Eclipse访问Java中的File对象时,只要访问该文件,系统就会发送FileNotFoundException。我手动创建了文件并将其放在Eclipse的文件浏览器中。该文件确实有内容,所以问题不在于它是空的。我正在使用

初始化文件
File file = new File(this.getClass().getResource("save.txt").toString());

并使用

访问它
PrintWriter p = new PrintWriter(file);

发送错误。除了创建此类的初始化路径之外,堆栈跟踪不会返回任何内容。

是个例外
java.io.FileNotFoundException: file:\C:\Users\Nathaniel\Downloads\ERPGE-Global%20Equestria%20Workspace\Swarm\bin\main\save.txt (The filename, directory name, or volume label syntax is incorrect)

可能导致此错误的原因是什么,以及如何修复?

3 个答案:

答案 0 :(得分:1)

您需要确保资源包含在项目的构建路径中。

您可以通过以下两种方式之一完成此操作:

  1. 将其放入文件夹(例如“res”),然后将该文件夹添加到构建路径中。这样,文件夹中的所有文件都将添加到构建路径中。
  2. 将其放入(您的)源文件夹中。请注意,如果将其放在包文件夹中,则需要包含该文件夹的相对路径(见下文)。
  3. 我个人更喜欢选项#1。

    编辑:您可能还发现拥有res文件夹的子目录很有用。如果您有一个文件,例如 res / images / button.png ,并且您已将res文件夹添加到构建路径,则需要使用字符串“images / button访问该文件.PNG“

    修改2:修正了一些误导性信息。

答案 1 :(得分:1)

该文件需要放在父项目文件夹本身而不是源文件夹中。如果创建的文件没有指定的文件路径,则会存储该文件。

答案 2 :(得分:0)

提供文件的实际路径并获取文件Object。然后你可以使用它。

File file = new File("C:\Users\Nathaniel\Downloads\save.txt");
PrintWriter p = new PrintWriter(file);

编辑:

外部化文件名:

在外部文件夹/包中创建属性文件filedetails.properties。

fileName=C:\Users\Nathaniel\Downloads\save.txt

访问资源包。

ResourceBundle b=ResourceBundle.getBundle("external.filedetails") ;
String fileName=b.getString("fileName");
File file=new File(fileName);