1

假设我正在制作一个程序,该程序需要在我的 .jar 文件中复制 .txt 文件中的所有行。它在包program.files中,名为 text.txt。我一直在寻找整个互联网,我找不到我要找的东西。我认为这个想法:

public String readSpecificFromJar(String dir, int line) {
    String read = null;
    try {
        InputStream in = getClass().getResourceAsStream(dir);
        BufferedReader bufferedReader = new BufferedReader(
                new InputStreamReader(in));

        /**
         * declare string variable and prime the read
         */
        read = bufferedReader.readLine();

        for (int i = 1; i < line; i++) {
            read = bufferedReader.readLine();
        }

        bufferedReader.close();
    } catch (IOException ioexception) {
        Dialogs.fail("Could not read txt file from the JAR!!! Error Code: 06");
    }

    return read;
}

会工作,但我试过了,它给了我各种各样的错误。我认为问题在于声明InputStream in它希望文件使用 Main 方法的方式。我将如何改变这一点,所以事实并非如此?提前致谢!

编辑:由于一些混乱,我想澄清这一点。dir对于我正在输入的字符串files/text.txt。它不会工作。我该如何解决?

编辑2:好的,我觉得问题没有解决,而且我有点生气,主要是因为我很累。适用于不同程序的代码在上面,其中dir很简单"text.txt"

这对我正在做的事情不起作用,我不知道为什么。再次,文件在类路径中,所以dir只有"text.txt". 我希望我的 .txt 文件是"files/text.txt". 我该怎么做呢?

编辑 3:我不知道我是否提到过,但我的 .txt 文件在我的 jar 内。只是为了消除混乱。所以真的,.jar 文件的路径应该无关紧要,因为我不应该用 .jar 输入它dir。此外,主类在包main中,.txt 文件在包中,files都在同一个名为copy. 另外,我尝试将 txt 文件移动到与类相同的包中main,也没有用。

编辑 4:顺便说一下,保存从 jar 读取方法的包是IO. 因为类io在包里面IO。我的所有文件(例如图像和 txt)都在包中files。只是想我清楚了。我尝试将 txt 文件移动到io类的包中,并且有效,但如果它在任何其他包中,即使我在其中包含包名dir也不会工作。关于为什么的任何想法?

4

1 回答 1

1

.txt文件应位于与您的类文件所在的目录相同dir的根目录中。


编辑:由于一些混乱,我想澄清这一点。对于字符串目录,我正在输入文件/text.txt。它不会工作。我该如何解决?

类的路径是什么?(包含 readSpecificFromJar() 的类)如果.class文件和.txt文件都在同一个目录中,那么你应该这样:

dir = "text.txt";

编辑 4:顺便说一下,保存从 jar 读取方法的包是 IO。因为类 io 在包 IO 中。我的所有文件(例如图像和 txt)都在包文件中。只是想我清楚了。我尝试将 txt 文件移动到 io 类的包中,这很有效,但如果它在任何其他包中,即使我在目录中包含包名,它也不会工作。关于为什么的任何想法?

试试这个:

dir = "../files/text.txt";

如果您的结构如下,我相信这会起作用:

   javaApp.jar
        |
   _____|_____
  |           |
files         IO
  |           |
  |           |
text.txt   io.class
于 2012-09-29T23:09:39.347 回答