1

当我尝试使用 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)

什么可能导致此错误,如何解决?

4

3 回答 3

1

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

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

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

我个人更喜欢选项#1。

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

编辑 2:修复了一些误导性信息。

于 2012-07-20T11:56:28.967 回答
1

该文件需要放在父项目文件夹本身而不是源文件夹中。如果创建的文件没有指定的文件路径,那么这就是它的存储位置。

于 2014-04-18T00:10:44.927 回答
0

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

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);
于 2012-07-20T11:49:23.723 回答