NetBeans中的Java相对路径

时间:2011-08-12 06:44:52

标签: java netbeans io filereader

我正在开发一个NetBeans模块,其中有一个名为test的Java包和另一个名为test.templates的包。我想从测试包中的Java文件中读取test.templates包中的文本文件。我尝试了几种方法,但它提供了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 个答案:

答案 0 :(得分:3)

您需要使用getResourcegetResourceAsStream

java2s.com上的示例:

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

答案 1 :(得分:3)

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

+文件:默认为项目文件夹,表示在from socket import * s = socket(AF_INET, SOCK_STREAM) s.bind(('', 6969)) s.listen(10) c, a = s.accept() while True: data = c.recv(100000) if data: print data else: print "Client closed connection" break 文件夹之外 如果您保存到src,则会生成:test.txt 如果您保存到project/test.txt,... data/test.txt
因此,如果你想加载文件,你只需反过来。像这样,你应该把你的文件放在project / data / filename.txt中。然后在代码中,您获得路径:project/data/test.txt

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

答案 2 :(得分:1)

getResource()会返回一个网址,因此要提取文件名,您可以尝试拨打getFile()

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

示例:

getResource(/db_files/table.csv).getFile()

答案 3 :(得分:0)

try
{
BufferedReader br = new BufferedReader(new FileReader(getClass().getResource("/test/templates/test.txt").toString().substring(6)));
}
catch(Exception ee)
{
JOptionPane.showMessageDialog(this, ee);   
}