gpt4 book ai didi

java - Java 的 getClass().getResource() 的最佳国际替代品

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:32:48 29 4
gpt4 key购买 nike

我的 Java 应用程序中捆绑了很多资源文件。这些文件的文件名包含 ü 或 æ 等国际字符。我想使用 getClass().getResource() 加载这些文件,但显然这不受支持,因为对于这些特定文件名,getResource 方法始终返回 null。

这让我尝试使用国际字符的 URL 编码,但正如 http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4968789 所述,这也不被支持.

所以,我的问题是:加载名称包含国际字符的资源的推荐方法是什么?例如,我需要加载名为 Sjælland.txt 的文件的 UTF-8 内容

最佳答案

不确定是否有best(它可能是worst 的候选者,因为它是相当hack)但这似乎是一个有效的机制。它通过直接读取 jar 避免了使用 getResource 的需要。

public class NavelGazing {
public static void main(String[] args) throws Throwable {
// Do a little navel gazing.
java.net.URL codeBase = NavelGazing.class.getProtectionDomain().getCodeSource().getLocation();
// Must be a jar.
if (codeBase.getPath().endsWith(".jar")) {
// Open it.
java.util.jar.JarInputStream jin = new java.util.jar.JarInputStream(codeBase.openStream());
// Walk the entries.
ZipEntry entry;
while ((entry = jin.getNextEntry()) != null ) {
System.out.println("Entry: "+entry.getName());
}
}

}
}

我添加了一个名为 Sjælland.txt 的文件,这确实成功地获得了条目。

关于java - Java 的 getClass().getResource() 的最佳国际替代品,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13013629/

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