在Java中读取jar文件中的Txt文件

时间:2014-08-20 19:30:05

标签: java eclipse

我已经编写了一个Java程序,并以通常的方式将其打包在jar文件中 - 遗憾的是需要在txt-File中读取。这是程序无法在其他计算机上启动的方式,因为它无法找到txt文件。

同时我在我的程序中使用了很多图像,但这里没有这样的问题:我"复制"将图像发送到eclipse主目录,以便将它们打包在jar文件中,并通过以下命令使用:

BufferedImage buffImage=ImageIO.read(ClassName.class.getClassLoader()
                    .getResourceAsStream("your/class/pathName/));

对于简单的文本文件有类似的东西,然后可以用作普通的new File()


修改
我试图用这个解决方案来解决我的问题:

package footballQuestioner;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

import javax.security.auth.login.Configuration;


public class attempter {

    public static void main(String[] args) {
        example ex = new example();
    }

}

class example  {



    public example() {

        String line = null;

        BufferedReader buff = new BufferedReader(new InputStreamReader(
                Configuration.class
                        .getResourceAsStream("footballQuestioner/BackUpFile")));

        do {
            try {
                line = buff.readLine();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        } while (line != null);

    }

}

但它总是给出一个NullPointerException ...我忘记了什么吗?

这是我的jar文件结构:文件:

enter image description here enter image description here enter image description here enter image description here

2 个答案:

答案 0 :(得分:2)

您可以通过执行以下操作从ClassPath加载文件:

ClassLoader cl = getClass().getClassLoader()
cl.getResourceAsStream("TextFile.txt");

这也应该有效:

getClass().getResourceAsStream(fileName);

文件始终指向文件系统中的文件,因此我认为您必须处理流。

答案 1 :(得分:1)

jar中没有“文件”,但您可以将文本文件作为资源(URL)或InputStream。可以将InputStream传递给Scanner,它可以帮助您读取文件。

你说:

  

但它总是给出一个NullPointerException ...我忘记了什么吗?

这意味着您的资源路径"footballQuestioner/BackUpFile"可能错误。您需要开始查找与您的类文件相关的资源。您需要确保正确拼写文件名及其扩展名。您在这里错过了.txt分机吗?


修改
如果您尝试简单地怎么办?

BufferedReader buff = new BufferedReader(new InputStreamReader(
            Configuration.class.getResourceAsStream("BackUpFile")));