为了在我的游戏中加载世界,我的程序会读取文本文件。在Eclipse中一切正常但在导出为可运行的jar后,它再也找不到文本文件了。
这会调用函数从文本文件中读取。
LevelHandler.loadLevel("res/levels/level.txt");
这是函数本身
public static void loadLevel(String file){
String level = LevelLoader.loadFileAsString(file);
这是loadFileAsString()函数
public static String loadFileAsString(String file){
StringBuilder builder = new StringBuilder();
try {
@SuppressWarnings("resource")
BufferedReader bufferedReader = new BufferedReader(new FileReader(file));
String line;
while((line = bufferedReader.readLine()) != null){
builder.append(line + "\n");
}
} catch (IOException e) {
e.printStackTrace();
}
return builder.toString();
}
此外,它可能值得注意的是,res文件夹永远不会出现在jar中,但里面的levels文件夹却会出现。也许这就是使文件无法找到的原因。我尝试使用此导出但出现了同样的错误。
LevelHandler.loadLevel("levels/level.txt");
答案 0 :(得分:1)
您正在向文件系统询问导出的jar中的内容。
如果levels
文件夹位于导出的jar文件中,则应使用getResourceAsStream
或Class
提供的ClassLoader
来阅读它们。
例如:
InputStream in = LevelLoader.class.getResourceAsStream("/levels/level.txt");
然后在顶部构建BufferedReader
:
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(in));
答案 1 :(得分:0)
尝试这样(假设level / level.txt在jar文件中):
InputStream is = Thread.currentThread().getContextClassLoader().getResourceAsStream("levels/level.txt");
BufferedReader reader= new BufferedReader(new InputStreamReader(is));
String line = null;
while((line = reader.readLine()) != null){
builder.append(line + "\n");
}