在.jar应用程序中读取文本文件
问题描述:
使用此代码我想要.jar文件读取位于文件夹数据中的jar文本文件“file.txt”。这是一个用Processing编程的应用程序,所以我想要读取的所有文件都在数据文件夹中。任何人都可以解释为什么我得到一个NullPointerException?该文件存在并包含文本。在.jar应用程序中读取文本文件
import java.io.*;
void setup() {
size(500, 500);
try {
// HERE I TRY TO READ THE FILE WHICH IS LOCATED IN THE JAR FILE IN THE FOLDER "DATA"
InputStream is = getClass().getResourceAsStream("/data/file.txt");
// HERE I GET A NULL-POINTER-EXCEPTION BECAUSE THE FILE CANNOT BE READ (IS = NULL, WHY IS THE INPUT STREAM NULL?)
BufferedReader br = new BufferedReader(new InputStreamReader(is));
// THE FIRST LINE OF THE DOCUMENT IS READ AND PRINTED IN THE CONSOLE
String read = br.readLine();
br.close();
println(read);
}
catch (IOException e) {
// IF THE FILE DOESN'T EXIST AN IO-EXCEPTION WILL BE CAUGHT
println("Error reading file");
}
}
答
getClass().getResourceAsStream("/data/file.txt");
返回null,因为它使用那个类的系统加载器,它看不到你的jar。使用相反
YourClassName.class.getResourceAsStream("/data/file.txt");
+0
但是我的Processing草图中没有任何类。 – 2015-02-08 15:18:58
罪魁祸首是'InputStream is = getClass()。getResourceAsStream(“/ data/file.txt”);'is is null。 – SMA 2015-02-08 13:05:31
http://stackoverflow.com/questions/16842306/how-to-read-a-file-from-jar-archive或 http://stackoverflow.com/questions/3369794/how-to-a -java-in-java – emin 2015-02-08 13:23:31