Java 从jar加载文件夹
我正在尝试访问jar文件中的目录。我想浏览目录中的每个文件。我尝试使用以下方法:Java 从jar加载文件夹,java,xml,Java,Xml,我正在尝试访问jar文件中的目录。我想浏览目录中的每个文件。我尝试使用以下方法: File[] files = new File("ressources").listFiles(); for (File file : files) { XMLParser parser = new XMLParser(file.getAbsolutePath()); // some work } 如果我测试这个,它工作得很好。但是
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
见此:
基本上,您只需使用ZipInputStream来查找文件列表(a.jar与a.zip相同)
一旦知道了文件名,就可以使用getClass().getResource(字符串路径)获取文件的URL。我猜这个
jar
在您的类路径上
您可以使用ClassLoader
列出目录中的所有文件
首先可以获取文件名列表,然后可以从类加载器
获取单个文件的URL
s:
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);
}
publicstaticvoidmain(字符串[]args)引发异常{
最终字符串base=“/path/to/folder/inside/jar”;
最终列表URL=新链接列表();
try(最终扫描程序s=新扫描程序(MyClass.class.getResourceAsStream(base))){
而(s.hasNext()){
add(MyClass.class.getResource(base+“/”+s.nextLine());
}
}
System.out.println(URL);
}
您可以使用URL
执行任何操作-要么读取InputStream
并将其复制到内存中,要么将InputStream
复制到硬盘上的文件中
请注意,这肯定适用于默认的URLClassLoader
,如果您使用的是小程序或自定义ClassLoader
,则此方法可能不起作用
NB:
您有一个输入错误-它的资源
不是资源
您应该在项目中使用,这是惯例。首先,我创建了可执行jar,其中包含一些Resources,我的程序使用IDE,但jar noI将字符串基修改为我的文件夹/Resources,我得到了以下异常:java.io.Reader上的线程“main”java.lang.NullPointerException中的异常。(未知源)在java.io.InputStreamReader。(未知源代码)在java.util.Scanner。(未知源代码)@ELMEKKIAnouar你检查过你的打字错误吗?我假设您使用了正确的类
作为类引用。我将我的文件夹重命名为resources,但我总是得到例外。您可以解压缩jar以确保文件夹在其中吗?我解压缩jar我没有找到资源我直接在根目录中获取所有文件