2015-02-08 82 views
-1

使用此代码我想要.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"); 
    } 
}  
+0

罪魁祸首是'InputStream is = getClass()。getResourceAsStream(“/ data/file.txt”);'is is null。 – SMA 2015-02-08 13:05:31

+0

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

回答

0

getClass().getResourceAsStream("/data/file.txt");返回null,因为它使用那个类的系统加载器,它看不到你的jar。使用相反

YourClassName.class.getResourceAsStream("/data/file.txt"); 
+0

但是我的Processing草图中没有任何类。 – 2015-02-08 15:18:58