第一的:
我知道,这个问题已经被问了大约 100 次。我知道,已经有人给出了正确的答案。
但无论如何,我不得不再次问这个问题。我没有找到适合我的解决方案。对不起。
我正在用java编写游戏。当然,我有很多包含声音和图片等的包(文件夹)。但是这些文件夹的大小都是可变的。所以我想将这样一个文件夹的内容动态保存在一个列表中。
通常,我是这样做的:
File f[] = new File(getClass.getResource("/home/res/").toURI()).listFiles();
现在我可以遍历这个文件对象并保存每个文件。完美的。真的吗?
不。当我将此项目提取到 jar 存档中时,这会失败。这一切都是因为 uri 不是“分层的”或类似的东西。看到这个例外:
C:\Users\Administrator\Desktop>java -jar Homework.jar
java.lang.IllegalArgumentException: URI is not hierarchical
at java.io.File.<init>(Unknown Source)
at homework.moonface.src.Moonface.loadSounds(Moonface.java:94)
at homework.moonface.src.Moonface.<init>(Moonface.java:55)
at control.Overview.main(Overview.java:16)
好的,我想,所以我需要获取此路径并将其手动添加到文件对象中。(new File("path"); 但是...这不起作用。我收到输入未正确写入的已知错误,或者当我尝试从资源 url 中剪切“file:”时,它会中断,因为在 jar 中它的“jar:file:”而不是“file:”。但如果我切断 jar:file: 我会得到空值。
因此,请不要将其标记为重复,并尝试尽快为我解释一下。这将帮助成千上万的其他人,他们不了解其他不是解决方案的解决方案。