Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/331.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Java中读取jar文件中的Txt文件_Java_Eclipse - Fatal编程技术网

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

在Java中读取jar文件中的Txt文件,java,eclipse,Java,Eclipse,我已经编写了一个Java程序,并以通常的方式将其打包到一个jar文件中——不幸的是,它需要读取一个txt文件。这就是程序无法在其他计算机上启动的原因,因为它找不到txt文件 同时,我在我的程序中使用了许多图像,但这里没有这样的问题:我将图像“复制”到eclipse主目录,以便它们打包在jar文件中,并通过以下命令使用: BufferedImage buffImage=ImageIO.read(ClassName.class.getClassLoader()

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

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

BufferedImage buffImage=ImageIO.read(ClassName.class.getClassLoader()
                    .getResourceAsStream("your/class/pathName/));
简单的文本文件也有类似的功能,可以用作普通的
新文件()


编辑
我尝试用这个解决方案来解决我的问题:

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文件的文件结构:


您可以通过如下操作从类路径加载文件:

ClassLoader cl = getClass().getClassLoader()
cl.getResourceAsStream("TextFile.txt");
这也应该起作用:

getClass().getResourceAsStream(fileName);
File总是指向文件系统中的一个文件,所以我认为您必须处理一个流

jar中没有“文件”,但您可以将文本文件作为资源(URL)或输入流获取。可以将输入流传递到扫描仪,扫描仪可以帮助您读取文件

你说:

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

这意味着你的资源路径,
“足球提问者/备份文件”
可能是错误的。您需要开始查找与类文件相关的资源。您需要确保文件名及其扩展名的拼写正确。您是否缺少
.txt
扩展名


编辑
如果您尝试简单地:

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

jar中没有“文件”,但您可以将文本文件作为资源(URL)或输入流获取。可以将输入流传递到扫描仪,扫描仪可以帮助您读取文件。很难看到您的图像,但我在其中的任何位置都看不到文本文件。@user3133542:我们无法评估
“看起来一切正常”
,但您提供了数据。请在对您的问题进行编辑时向我们展示您的jar文件的文件结构,因为这是知道什么应该起作用的唯一方法。我有解决方案我忘记了前导的“/”-符号,所以字符串应该是:new BufferedReader(new InputStreamReader(Configuration.class.getResourceAsStream(“/footballQuestioner/BackUpFile”));