文件读取器在导出时无法从资源文件夹 Java 读取



我正在制作一款自上而下的射击游戏,但是当罐子导出时,我似乎无法加载世界。

创造新世界:

world = new World(handler, "res/worlds/world1.txt");

在世界构造函数中加载世界:

loadWorld(path);

loadWorld 函数包含以下行:

String file = Utils.loadFileAsString(path);

然后,我将文件的所有内容加载到 int[][] 数组中并继续

在 Utils 类中,我有以下代码:

public static String loadFileAsString(String path) {
StringBuilder b = new StringBuilder();
try {
BufferedReader br = new BufferedReader(new FileReader(path));
JOptionPane.showMessageDialog(new JFrame(), "File Loaded (Dev testing)");
String line;
while((line = br.readLine()) != null)
b.append(line + "n");
br.close();
} catch(IOException e) {
e.printStackTrace();
}
return b.toString();
}

但它卡在

BufferedReader br = new BufferedReader(new FileReader(path));

部分,因为 JOptionPane 窗口未显示。

它在 Eclipse 中运行时有效,但在导出为 Runnable Jar 文件时无效。

我导出的 jar 文件的图像在 7zip 中打开:http://imgur.com/AX240ha

任何帮助将不胜感激!

雷加兹, 凯尔多·

无论放置.jar的位置,您的程序都会在目录中搜索 worlds 文件夹。但是由于世界文件夹在罐子里,所以不会找到它。因此,您有以下两种解决方案:

  • 将世界文件夹移出你的罐子
  • 使用如下所示的特殊代码从 jar 内部加载数据:

    InputStream input = World.class.getResourceAsStream("/worlds/world1.txt");
    BufferedReader reader = new BufferedReader(new InputStreamReader(input));
    

如果您只想将单个jar文件发送给其他人,则应选择第二个选项。但是,如果您使用像Steam这样的平台,甚至是简单的安装程序,则应使用第一个选项。

请注意,当您选择第二个选项时,如果将res文件夹设置为源文件夹(右键单击res文件夹:构建路径>用作源文件夹(,则代码可能仅在 Eclipse 中有效。

相关内容

  • 没有找到相关文章

最新更新