我在需要读取的类路径上的目录中有一个文件列表,并且更喜欢使用 File API,但似乎我无法在存档中执行此操作。这适用于我的本地环境单元测试,但是当我在 EAR 中部署为 WAR 时,文件列表返回 null:
File dir = new File(getClass().getClassLoader().getResource("mydir").getPath());
File[] files = dir.listFiles();
我在需要读取的类路径上的目录中有一个文件列表,并且更喜欢使用 File API,但似乎我无法在存档中执行此操作。这适用于我的本地环境单元测试,但是当我在 EAR 中部署为 WAR 时,文件列表返回 null:
File dir = new File(getClass().getClassLoader().getResource("mydir").getPath());
File[] files = dir.listFiles();
未解包战争时不能使用 File API,但可以使用 Servlet API。
ServletContext的getResourcePaths方法可用于检索“目录”的所有成员,然后通过getResource或getResourceAsStream检索目录中文件的内容。
for (String s : context.getResourcePaths("foo")) {
InputStream contents = context.getResourceAsStream(s);
//do something with the contents
}
如果您使用的是 Java SE 7,请尝试:
Path jarPath = Paths.get(...);
try (FileSystem jarFS = FileSystems.newFileSystem(jarPath, null)) {
Path dirJarPath = jarFS.getPath("/foo/mydir");
<use a FileVisitor and Files.walkFileTree>
}
http://docs.oracle.com/javase/7/docs/api/java/nio/file/FileVisitor.html