我在eclipse中有一个项目
foo_project
- src
- bar_package
bam.java
info.txt
- info.txt
- resources
- info.txt
在bam.java中,比方说,我打印出info.txt的内容,如
try {
welcome = new BufferedReader(new FileReader("src/info.txt"));
String currentLine = null;
while ( (currentLine = welcome.readLine()) != null) {
System.out.println(currentLine);
}
welcome.close();
} catch (Exception fof) {
System.err.println(fof.toString());
}
当我将info.txt放在src文件夹下时,它在eclipse中工作,但是,一旦我将此项目导出到JAR文件,它就无法工作。
在代码中,我只尝试了“info.txt”以及“src / info.txt”,它们都没有工作!正如你所看到的,我把info.txt放在各处都不成功!
如何在Java代码中引用此info.txt,并让Java在eclipse和JAR文件中找到它?
答案 0 :(得分:1)
如果info.txt
中的文字始终相同,而不是将文本视为文件,请考虑将其视为“资源”。如果这样做,您可以将其包含在JAR中,而不必将其作为单独的文件分发。
使用Class.getResourceAsStream()
方法打开资源InputStream
。
答案 1 :(得分:0)
我认为从Jar文件加载文件,文件阅读器方法无效,你必须使用class.getResource()或class.getResourceAsStream()方法
一些有用的链接,
Load a resource contained in a jar
How to load resource from jar file packaged in a war file? Load resource from class's own JAR file
另外其他人建议确保Jar文件包含您要查找的txt文件,您可以使用“jar”命令或winRAR
答案 2 :(得分:0)
要访问JAR文件中的资源,您需要使用
YourClass.getClassLoader().getResourceAsStream("info.txt")
这样,它将查看文件内部的JAR文件(或者更确切地说,在类路径的所有位置)作为资源。它可以在Eclipse和包装为JAR时使用。
答案 3 :(得分:0)
我最终在课堂上使用
getClass()。getResourceAsStream(“/ info.txt”),它给出了一个InputStream
然后我使用InputStreamReader和BufferedReader来读出文件。
/这是src文件夹。此文件夹下的所有内容都将构建到bin文件夹的末尾。
如果您有多个源文件夹(可以通过右键单击并在Eclipse中选择该选项将文件夹设置为源文件夹),则为单个bin文件夹构建所有源文件夹
例如, 如果你有源文件夹
sourceA
foo_package/...
sourceB
bar_package/...
然后在bin中,它将是
bin (this is the "/")
foo_package/...
bar_package/...
感谢所有人的答案和灵感!
答案 4 :(得分:-1)
你必须将你的txt文件放在jar文件夹的jar文件旁边
这意味着将您的txt文件复制到jar文件夹中而不是复制到jar文件