Questions tagged «getresource»

7
Class.getResource()和ClassLoader.getResource()有什么区别?
我想知道Class.getResource()和之间有什么区别ClassLoader.getResource()? 编辑:我特别想知道在文件/目录级别是否涉及任何缓存。如“类别列表中缓存目录列表吗?” AFAIK以下基本上应该做同样的事情,但事实并非如此: getClass().getResource() getClass().getClassLoader().getResource() 我在摆弄一些报表生成代码时发现了这一点,该代码WEB-INF/classes/从该目录中的现有文件中创建了一个新文件。使用Class中的方法时,可以使用找到部署getClass().getResource()时存在的文件,但是当尝试获取新创建的文件时,我收到了一个空对象。浏览目录清楚地表明新文件在那里。文件名前面有一个正斜杠,如“ /myFile.txt”中所示。 另一方面,的ClassLoader版本getResource()确实找到了生成的文件。从这种经验看来,目录列表存在某种形式的缓存。我是对的,如果是这样,在哪里记录? 从API文档开始Class.getResource() 查找具有给定名称的资源。搜索与给定类关联的资源的规则由该类的定义类加载器实现。此方法委派给该对象的类加载器。如果此对象是由引导类加载器加载的,则该方法将委托给ClassLoader.getSystemResource(java.lang.String)。 对我来说,这是“ Class.getResource实际上正在调用其自己的类加载器的getResource()”。这和做一样getClass().getClassLoader().getResource()。但这显然不是。有人可以为我提供一些启发性的东西吗?

16
如何列出JAR文件中的文件?
我有这段代码,它从目录中读取所有文件。 File textFolder = new File("text_directory"); File [] texFiles = textFolder.listFiles( new FileFilter() { public boolean accept( File file ) { return file.getName().endsWith(".txt"); } }); 效果很好。它使用目录“ text_directory”中所有以“ .txt”结尾的文件填充数组。 如何在 JAR文件中以类似方式读取目录的内容? 所以我真正想做的是列出我的JAR文件中的所有图像,这样我就可以加载它们: ImageIO.read(this.getClass().getResource("CompanyLogo.png")); (之所以可行,是因为“ CompanyLogo”是“硬编码的”,但是JAR文件中的图像数量可能是10到200个可变长度。) 编辑 所以我想我的主要问题是:如何知道我的主类所在的JAR文件的名称? 当然,我可以使用阅读java.util.Zip。 我的结构是这样的: 他们就像: my.jar!/Main.class my.jar!/Aux.class my.jar!/Other.class my.jar!/images/image01.png my.jar!/images/image02a.png my.jar!/images/imwge034.png my.jar!/images/imagAe01q.png my.jar!/META-INF/manifest 现在,我可以使用以下示例加载“ images / …
114 java  file  jar  java-io  getresource 
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.