java - 从可执行 JAR 中的 res 文件夹中提取文件(具体为 txt 文件)

标签 java eclipse jar

我想问是否可以将文本文件放入我的jar中,我用它们在我的游戏中制作 map ,但用户可以获得高分。现在我想用 map 保存高分,所以我必须将 map 保存在用户的电脑上。我有什么办法可以做到这一点吗?我在互联网上搜索了一些想法,但我找不到任何接近我想要的东西。我只学了一年的 3/4 java,所以我对这些东西了解不多,在 eclipse 调试之外发生的所有事情对我来说都是问题(文件主要是其中之一,空异常等)。

现在的主要问题。

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

编辑: 说清楚

我可以将文本文件(文件内的文本)提取到不同的文件中,例如我的游戏的主目录(我保存设置和内容的地方),基本 map 位于 jar 文件内,所以我希望在程序第一次启动时将它们提取

问候卡罗琳

最佳答案

"extracted to a different file in like the home directory of my game (where i save the settings and stuff) the basic maps are inside the jar file, so i want them to be extracted on the first startup of the program"

您可以使用getClass().getResource()获取URL

URL url = getClass().getResource("/res/myfile.txt");

然后从 URL 的 URI 创建一个 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));

只需使用阅读器进行正常的IO操作。请参阅here获取编写文件的帮助。

关于java - 从可执行 JAR 中的 res 文件夹中提取文件(具体为 txt 文件),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23192199/

相关文章:

java - 从 jar 加载图像并在 eclipse 中加载图像

java - 从命令行使用 JAR 保持 JVM 运行

java - 无法从maven中安装的jar加载类

java - 通过 REST API Java 从 URL 获取 ObjectID

eclipse - 将 Eclipse 中现有的 Maven 导入为 WTP

c++ - 在 Linux 上,在 Eclipse CDT 中使用 gdb 调试 C++ 应用程序,如何向标准输入输入内容?

java - ANTLR myParser.java 未生成

java - keycloak 中的领域创建

java - 如何在没有主服务器的情况下编写用于 p2p 文件共享的 Web 应用程序?

java - 求幂集与集合列表的交集