gpt4 book ai didi

java - 如何使用 NIO 从 JAR 中读取文件?

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:19:44 25 4
gpt4 key购买 nike

使用 ClassLoader.getResourceAsStream(...) 从可执行 JAR 文件本身读取文件对我来说是一个已知的概念,但是我如何使用 Java NIO 执行相同的操作?

目标是具有如下功能:

static String readFullyFromJar(String filename) {
final Path path = Paths.get(Main.class.getResource(fileName).toURI());
final byte[] bytes = Files.readAllBytes(path);
return new String(bytes, CHARSET_ASCII);
}

虽然这在 IDE 中工作正常,但我得到了一个

java.nio.file.FileSystemNotFoundException
at com.sun.nio.zipfs.ZipFileSystemProvider.getFileSystem(ZipFileSystemProvider.java:171))

当我尝试使用真正的 JAR 时,即使目标文件位于正确的位置。

最佳答案

事实证明,我上面的代码实际上是正确的,问题出在 Java 本身。

根据这个Bug ID , Java 没有正确地使用 ZipFileSystemProvider。应该在 Java 8 中修复。(我的实际问题在这个 duplicate report 中描述)

关于java - 如何使用 NIO 从 JAR 中读取文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19304107/

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