从Executable JAR中的res文件夹中提取文件(特定于txt文件)

时间:2014-04-21 06:38:15

标签: java eclipse jar

我想问一下是否有可能将文本文件放入我的jar中,我用它们在我的游戏中制作我的地图,但是用户可以获得Highscores。现在我想用地图保存Highscores,所以我必须将地图保存在用户的PC上。有什么方法可以做到这一点吗?我在互联网上搜索了一些想法,但我找不到任何甚至接近我想要的东西。我只有一年的3/4,所以我对这些事情知之甚少,在eclipse调试之外发生的一切对我来说都是问题(文件主要是其中之一,null异常等)。

现在的主要问题。

有可能吗?如果是,您是否有我可以搜索的任何术语,或某些网站/指南/教程?如果不是,还有其他方法可以保存高分吗?

编辑: 明确

我可以将文本文件(文件中的文本)提取到不同的文件中,就像我的游戏的主目录(我保存设置和内容)一样,基本地图都在jar文件中,所以我想让它们在程序的第一次启动时被提取出来

问候Carolien

1 个答案:

答案 0 :(得分:1)

  

“提取到我的游戏的主目录中的不同文件(我保存设置和东西),基本地图在jar文件中,所以我希望它们在程序的第一次启动时被提取”

您可以使用getClass().getResource()

获取网址
URL url = getClass().getResource("/res/myfile.txt");

然后从URL的

创建一个File对象
File file = new File(url.toURI());

然后只执行正常的文件操作。

if (file.renameTo(new File(System.getProperty("user.home") + "\\" + file.getName()))) {
    System.out.println("File is moved successful!");
} else {
    System.out.println("File is failed to move!");
}

假设您的文件结构如下所示,它应该可以正常工作

ProjectRoot
         src
            res
               myfile.txt

注意:上面是移动整个文件。如果您只想提取文件中的数据,那么您可以简单地使用

InputStream is = getClass().getResourceAsStream("/res/myfile.txt");
BufferedReader reader = new BufferedReader(new InputStreamReader(is));

使用reader进行正常的IO操作。有关编写文件的帮助,请参阅here