我正在开发一个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"));
但这些都不起作用..我想使用相对路径,而不是绝对路径。我该怎么办?
答案 0 :(得分:3)
您需要使用getResource
或getResourceAsStream
。
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);
}