我已经编写了一个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文件结构:文件:
答案 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")));