我試圖取代使用文件和FileReaders的所有實例,並與InputStreams和適當的閱讀器替換它們,準備在一個罐子包裝的應用程序 - 但是,當我嘗試使用ClassLoader.getSystemClassLoader().getResourceAsStream()
與File方法找到的路徑相同,但由於無法找到文件而失敗。嘗試使用的getResourceAsStream()和失敗
我使用的代碼和輸出:
文件中的文本:
e:Easy
definitions/easy_level_definitions.txt
h:Hard
definitions/hard_level_definitions.txt
d:Derp
definitions/derp_level_definitions.txt
代碼:
String line;
File f = new File("src/resources/level_sets.txt");
BufferedReader reader1 = null;
try {
reader1 = new BufferedReader(new FileReader(f));
while ((line = reader1.readLine()) != null) {
System.out.println(line);
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if (reader1 != null) {
reader1.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
line = null;
InputStream is = ClassLoader.getSystemClassLoader().getResourceAsStream("src/resources/level_sets.txt");
BufferedReader reader = new BufferedReader(new InputStreamReader(is));
try {
while ((line = reader.readLine()) != null) {
System.out.println(line);
}
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if (reader != null) {
reader.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
輸出:
e:Easy
definitions/easy_level_definitions.txt
h:Hard
definitions/hard_level_definitions.txt
d:Derp
definitions/derp_level_definitions.txt
Exception in thread "main" java.lang.NullPointerException
at java.io.Reader.<init>(Unknown Source)
at java.io.InputStreamReader.<init>(Unknown Source)
at Testing.main(Testing.java:34)
感謝球員們,以前試過用文件,它沒有工作,並沒有認爲它對他們的工作方式不同。無論如何,它可以工作,如果我刪除'src/resources /'部分,非常感謝。 – Sunspawn
你爲什麼使用你的系統類加載器呢? –
這是班級教員(大學課程)的建議。我相信當從jar之外的源代碼運行jar時,允許通過命令行提供額外的級別集。 另外,''/level_sets.txt''在''level_sets.txt''工作時似乎不起作用。任何解釋爲什麼? – Sunspawn