我必须为学校做一个项目;游戏而已。我从文本文件加载地图。目前我使用扫描程序,但我无法在不将res文件放在JAR文件旁边的情况下使其在Runnable JAR文件中运行。我想把文本文件放进去;它适用于BufferedImages,但文本文件不起作用。我有这段代码:
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;
}
path =“res / Maps / 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
这似乎不起作用。我已经研究了很多,但找不到任何对我有用的东西。我只需要一个字符串中的整个文本文件,其余的很容易使用子字符串,依此类推。
EDIT!: 对此的解决方案是我的路径已经存在,并且由于这个原因它没有用。我删除了res并将“/Maps/Map2.txt”作为路径,现在加载文件并再次显示我的地图。
答案 0 :(得分:2)
public static String ReadTextFile(String path) throws IOException{
String HoldsText= null;
InputStream is = getClass().getResourceAsStream(path);
InputStreamReader fr = new InputStreamReader(is);
BufferedReader br = new BufferedReader(fr);
StringBuilder sb = new StringBuilder();
while((HoldsText = br.readLine())!= null){
sb.append(HoldsText)
.append("\n");
}
return sb.toString();
}
您需要附加行并使用InputStreamReader
代替FileReader