我正在尝试访问jar文件中的目录。我想浏览目录中的每个文件。我尝试使用以下内容:
File[] files = new File("ressources").listFiles();
for (File file : files) {
XMLParser parser = new XMLParser(file.getAbsolutePath());
// some work
}
如果我测试一下,它运作良好。但是,一旦我把内容放入罐子里,它就不会因为几个原因了。如果我使用此代码,则URL始终指向jar外部。
我项目的结构:
src
controllers
models
class that containt traitement
views
ressources
答案 0 :(得分:1)
见:
How do I list the files inside a JAR file?
基本上,您只需使用ZipInputStream查找文件列表(.jar与.zip相同)
一旦知道了文件的名称,就可以使用getClass()。getResource(String path)来获取文件的URL。
答案 1 :(得分:0)
我认为这个jar
在你的类路径上。
您可以使用ClassLoader
列出目录中的所有文件。
首先,您可以获取文件名列表,然后您可以从URL
获取ClassLoader
个别文件:
public static void main(String[] args) throws Exception {
final String base = "/path/to/folder/inside/jar";
final List<URL> urls = new LinkedList<>();
try (final Scanner s = new Scanner(MyClass.class.getResourceAsStream(base))) {
while (s.hasNext()) {
urls.add(MyClass.class.getResource(base + "/" + s.nextLine()));
}
}
System.out.println(urls);
}
您可以使用URL
执行任何操作 - 阅读并InputStream
进入内存或将InputStream
复制到硬盘上的File
。
请注意,这绝对适用于默认的URLClassLoader
,如果您使用的是applet或自定义ClassLoader
,则此方法可能无效。
<强> NB:强>
你有一个拼写错误 - resources
而不是ressources
。
您应该将reverse domain name notation用于您的项目,这是惯例。