我必須爲學校做一個項目;遊戲而已。我從一個文本文件加載地圖。目前我使用掃描器來完成這項工作,但是我無法設法讓它在可運行JAR文件中工作,而無需將res文件放在JAR文件旁邊。我想在裏面找到文本文件;它與BufferedImages一起工作,但文本文件不起作用。我有這樣的代碼:Java讀取Runnable JAR文件中的文本文件錯誤
public String ReadTextFile(String path) throws IOException {
String HoldsText= null;
FileReader fr = new FileReader(getClass().getResource(path).toString());
BufferedReader br = new BufferedReader(fr);
while((HoldsText = br.readLine())!= null){
System.out.println(HoldsText);
}
return HoldsText;
}
路徑= 「RES /地圖/ Map2.txt」
錯誤:
文件結構java.lang.NullPointerException
at aMAZEing.TextManager.ReadTextFile(TextManager.java:22)
at aMAZEing.Map.openFile(Map.java:89)
at aMAZEing.Map.<init>(Map.java:31)
at aMAZEing.Board.<init>(Board.java:50)
at aMAZEing.Maze.<init>(Maze.java:24)
at aMAZEing.Maze.main(Maze.java:15)
:這似乎http://speedcap.net/sharing/screen.php?id=files/a9/77/a977e8b487f21e67db941a96087561cd.png
並不儘管工作。我研究了很多,但找不到任何對我有用的東西。我只需要一個字符串中的整個文本文件,其餘的很容易與子字符串等。
編輯!: 解決這個問題的方法是我的路徑已經存在,並且因此無法正常工作。我刪除了res並獲得了「/Maps/Map2.txt」作爲路徑,現在文件加載並且我的地圖再次顯示。
如果粘貼孤單和錯誤的堆棧跟蹤。你在哪裏放置你的文件,路徑的值是什麼。星期一的部分也是沒有必要的。 –
嘗試在路徑開始處添加一個斜槓(/)。 'path =「/res/Maps/Map2.txt」' –
而不是'FileReader'使用'InputStreamReader',並將從類加載器獲得的'InputStream'傳遞給它。 –