gpt4 book ai didi

java - 将 Java jar 中文本文件的路径传递给 C 库?

转载 作者:行者123 更新时间:2023-12-02 03:45:13 29 4
gpt4 key购买 nike

我有一个包含文本文件的 Java jar 文件。从 jar 中的 Java 代码中,我使用 JNA 来调用 C 库中的函数。我需要将文本文件的文件路径传递给 C 函数之一,以便 C 程序可以读取它。

由于需要读取文件的是C程序而不是Java程序,所以我不能简单地这样做:

getClass().getResourceAsStream("MyFile.txt");

C 程序不受我的控制,并且它不理解 jar:file:// 路径。

如何做到这一点? jar 的内容会自动提取到某处吗?我需要将其提取到某处吗?当我无法确定我在任何地方都有写权限时,我该怎么做?

最佳答案

该文件显然打包在 jar(或类路径)中:这意味着资源

如果您获取 URL:

getClass().getResource("MyFile.txt");

接收到如下 URL:

"jar:file://...path-to-jar... .jar! ...package-path-of-class.../MyFile.txt"

C 部分必须从 jar 中解压该条目(jar 是一个 zip),然后就完成了。注意“jar:file:/”。

如果C部分无法更改,则创建一个临时文件

Path path = Files.createTempFile("temp_", ".txt");
Files.copy(getClass().getResourceAsStream("MyFile.txt", path));

这些函数可以有附加参数、文件属性。并传递path.toString()

根据需要删除它。

关于java - 将 Java jar 中文本文件的路径传递给 C 库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36355779/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com