4

我正在开发一个 NetBeans 模块,其中有一个名为 Java 包test和另一个名为test.templates. 我想test.templates从测试包中的 Java 文件中读取包中的文本文件。我尝试了几种方法,但它给出了一个FileNotFoundException例外:

BufferedReader br = new BufferedReader(new FileReader("templates/test.txt"));
BufferedReader br = new BufferedReader(new FileReader("/test/templates/test.txt"));
BufferedReader br = new BufferedReader(new FileReader("src/test/templates/test.txt"));

但是这些都不起作用..我想使用相对路径,而不是绝对路径。我应该怎么办?

4

4 回答 4

4

You will want to use getResource or getResourceAsStream.

Example on java2s.com:

http://www.java2s.com/Code/Java/Development-Class/Loadresourcefilerelativetotheclasslocation.htm

于 2011-08-12T06:47:19.150 回答
3

你应该注意一些关于相对路径(Netbeans)的事情:

+ 文件:默认为项目文件夹,表示src文件夹外。
如果保存到test.txt,它将生成:project/test.txt
如果你保存到data/test.txt, ...project/data/test.txt
所以如果你想加载文件,你只需反过来。像这样,您应该将文件放在 project/data/filename.txt 中。然后在编码时,你会得到 path: data/filename.txt

+ ImageIcon:如果可以,我稍后会分享。
+ 图片(SplashScreen):我稍后会分享。

于 2015-07-11T11:45:59.623 回答
1

getResource()返回一个 URL,因此要提取文件名,您可以尝试调用getFile().

您传递给 getResource 的文件路径将基于您的 netbeans 包。使用前导斜杠表示类路径的根。

例子:

getResource(/db_files/table.csv).getFile()
于 2013-11-01T15:36:06.633 回答
0
try
{
BufferedReader br = new BufferedReader(new FileReader(getClass().getResource("/test/templates/test.txt").toString().substring(6)));
}
catch(Exception ee)
{
JOptionPane.showMessageDialog(this, ee);   
}
于 2012-08-21T10:10:06.587 回答