【发布时间】:2014-02-22 00:09:48
【问题描述】:
我必须为学校做一个项目;游戏而已。我从文本文件加载地图。目前我使用扫描仪进行此操作,但如果不将 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
这似乎不起作用。我进行了很多研究,但找不到任何对我有用的东西。我只需要一个字符串中的整个文本文件,其余的很容易使用子字符串等等。
编辑!: 对此的解决方案是我的路径中有资源,因此它不起作用。我删除了 res 并获得了“/Maps/Map2.txt”作为路径,现在文件加载并再次显示我的地图。
【问题讨论】:
-
如果存在错误,请粘贴堆栈跟踪。您将文件放在哪里以及
path的值是多少。也不需要关于星期一的部分。 -
尝试在路径的开头添加斜杠 (/)。
path = "/res/Maps/Map2.txt" -
使用
InputStreamReader代替FileReader,并将从类加载器获取的InputStream传递给它。 -
还是不行,我已经尝试将“/”be4 res/Maps/Map2.txt 和 FileReader 替换为 InputStreamReader 和 InputStream
-
您的文件名是小写的
map2.txt,尽管这可能没什么区别。您使用的是哪个操作系统?
标签: java jar executable-jar