将 Java jar 中文本文件的路径传递给 C 库?
Pass path to text file in Java jar to a C library?
我有一个包含文本文件的 Java jar 文件。从 jar 中的 Java 代码,我使用 JNA 调用 C 库中的函数。我需要将文本文件的文件路径传递给 C 函数之一,以便 C 程序可以读取它。
因为是C程序而不是Java程序需要读取文件,我不能简单地这样做:
getClass().getResourceAsStream("MyFile.txt");
C 程序不受我控制,它不理解 jar:file://
路径。
如何做到这一点? jar 的内容是否自动提取到某处?我需要把它提取到某个地方吗?当我不能确定我在任何地方都具有写入权限时,我该怎么做?
该文件显然打包在 jar(或 class 路径)中:即 resource.
的意思
如果你乘坐 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 jar 文件。从 jar 中的 Java 代码,我使用 JNA 调用 C 库中的函数。我需要将文本文件的文件路径传递给 C 函数之一,以便 C 程序可以读取它。
因为是C程序而不是Java程序需要读取文件,我不能简单地这样做:
getClass().getResourceAsStream("MyFile.txt");
C 程序不受我控制,它不理解 jar:file://
路径。
如何做到这一点? jar 的内容是否自动提取到某处?我需要把它提取到某个地方吗?当我不能确定我在任何地方都具有写入权限时,我该怎么做?
该文件显然打包在 jar(或 class 路径)中:即 resource.
的意思如果你乘坐 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()
.
酌情删除。