我必须为学校做一个项目;游戏而已。我从一个文本文件加载地图。目前我使用扫描器来完成这项工作,但是我无法设法让它在可运行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'传递给它。 –