我目前在eclipse中的设置是这样的:
树干
——工作/src
——资源
我在工作/src下的包内有一个java文件,我正试图检索资源中的文件。我使用的路径是"../resources/file.txt"。然而,我得到一个错误,说文件不存在。
任何帮助将不胜感激,谢谢!
考虑到你的结构
我有一个像
这样的包树干- 工作/src/FileRead.java
- 资源/名称list.txt
下面的代码可能会解决你的问题
package working.src;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.URL;
public class FileRead {
public FileRead() {
URL url = getClass().getResource("/resources/name list.txt");
try {
BufferedReader in = new BufferedReader(new InputStreamReader(url.openStream()));
String nameList;
while ((nameList = in.readLine()) != null) {
System.out.println(nameList);
}
} catch (Exception e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
new FileRead();
}
}
文件将相对于您的项目路径被引用,所以使用"resources/file.txt"来引用文件。
但是,如果您希望在将程序导出为JAR时可以访问该文件,则路径"resources/file.txt"必须相对于您的JAR存在。
这取决于您如何在eclipse中指定Java构建路径。我测试了两种设置,结果不同:
- 仅将目录
working/src
定义为构建路径。您可以通过Select project > Properties > Java Build Path > Tab Source
获取构建路径中的信息。这里列出了所有的源文件夹。您可以看到这里定义了一个默认的输出文件夹。构建路径中包含的所有资源都被复制到默认输出文件夹中,然后可供那里的eclipse类使用。如果资源被复制到bin文件夹中,您可以在资源透视图中检查。在此设置中,只生成类,不复制资源(因此找不到资源)。 - 定义目录
working/src
和resources
作为构建路径。然后复制资源,然后可以在路径"file.txt" 中找到它。
所以eclipse包含了一个简单的构建过程,并对开发人员隐藏了它,但它仍然是一个构建过程。