导出时,FileReader无法从资源文件夹中读取Java
我正在制作一个自上而下的射击游戏,但我似乎无法在导出罐子时加载世界 创造一个新世界:导出时,FileReader无法从资源文件夹中读取Java,java,eclipse,bufferedreader,Java,Eclipse,Bufferedreader,我正在制作一个自上而下的射击游戏,但我似乎无法在导出罐子时加载世界 创造一个新世界: world = new World(handler, "res/worlds/world1.txt"); 在世界构造函数中加载世界的: loadWorld(path); loadWorld函数包含以下行: String file = Utils.loadFileAsString(path); 在此基础上,我将把文件的所有内容加载到int[][]数组中,然后继续 在Utils类中,我有以下代码: publi
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中运行时有效,但在导出为可运行Jar文件时无效
在7zip中打开的导出jar文件的图像:
任何帮助都将不胜感激
再加上,
Kerdo K.您的程序将在放置.jar的目录中搜索worlds文件夹。但是因为worlds文件夹在jar中,所以找不到它。因此,您有以下两种解决方案: 将worlds文件夹移到jar之外 使用如下特殊代码从jar内部加载数据:
InputStream input = World.class.getResourceAsStream("/worlds/world1.txt");
BufferedReader reader = new BufferedReader(new InputStreamReader(input));
如果您只想向其他人发送一个jar文件,那么应该使用第二个选项。但是,如果您使用Steam这样的平台,甚至是一个简单的安装程序,您应该使用第一个选项
请注意,当您选择第二个选项时,如果您将res文件夹设置为源文件夹,则代码可能仅在Eclipse中工作。右键单击res文件夹:Build Path>Use as source folder。JOptionPane未显示,但是否没有引发IOException?不知何故,我认为与jar相同的目录中没有res/worlds/world1.txt文件。我会根据是否需要更改来决定是否将该文件放在jar中。第二个选项应该与eclipse一起使用。如果成功了,忘记从路径中删除/res。谢谢如下所示:world=newworldhandler,/worlds/world1.txt;确保不要忘记开头的斜杠。这个问题让我很困惑……如果你把资源放在与世界级资源相同的包中,那么初始斜杠就没有必要了。事实上,如果您的.jar文件是模块感知的,那么从Java9开始就需要这样做。