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