Java在Runnable JAR文件ERROR中读取文本文件

时间:2014-02-21 00:22:17

标签: java jar executable-jar

我必须为学校做一个项目;游戏而已。我从文本文件加载地图。目前我使用扫描程序,但我无法在不将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”作为路径,现在加载文件并再次显示我的地图。

1 个答案:

答案 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