0

我在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 文件中都找到它?

4

5 回答 5

1

如果您的文本info.txt始终相同,则不要将文本视为文件,而应考虑将其视为“资源”。如果您这样做,您可以将它包含在您的 JAR 中,而不必将其作为单独的文件分发。

您使用该方法打开InputStream一个资源。Class.getResourceAsStream()

于 2013-07-03T07:02:24.783 回答
0

我认为要从 Jar 文件加载文件,文件阅读器方法将无法有效工作,您将不得不使用 class.getResource() 或 class.getResourceAsStream() 方法

一些有用的链接,

加载包含在 jar 中的资源

如何从打包在war文件中的jar文件中加载资源? 从类自己的 JAR 文件中加载资源

此外,正如其他人建议的那样,确保 Jar 文件包含您要查找的 txt 文件,您可以使用“jar”命令或 winRAR

于 2013-07-03T07:05:50.600 回答
0

要访问 JAR 文件中的资源,您需要使用

YourClass.getClassLoader().getResourceAsStream("info.txt")

这样,它将在 JAR 文件内部(或者更确切地说,在类路径上的所有位置)查找文件作为资源。它可以在 Eclipse 和打包为 JAR 时工作。

于 2013-07-03T07:06:03.010 回答
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/...

感谢所有的答案和灵感!

于 2013-07-03T08:52:11.207 回答
-1

您必须将 txt 文件放在 jar 文件夹中的 jar 文件旁边

这意味着将您的txt文件复制到您的jar文件夹而不是jar文件

于 2013-07-03T07:01:37.787 回答