3

我在需要读取的类路径上的目录中有一个文件列表,并且更喜欢使用 File API,但似乎我无法在存档中执行此操作。这适用于我的本地环境单元测试,但是当我在 EAR 中部署为 WAR 时,文件列表返回 null:

File dir = new File(getClass().getClassLoader().getResource("mydir").getPath());
File[] files = dir.listFiles();
4

2 回答 2

2

未解包战争时不能使用 File API,但可以使用 Servlet API。

ServletContext的getResourcePaths方法可用于检索“目录”的所有成员,然后通过getResourcegetResourceAsStream检索目录中文件的内容。

for (String s : context.getResourcePaths("foo")) {
    InputStream contents = context.getResourceAsStream(s);
    //do something with the contents
}
于 2012-06-25T19:09:24.323 回答
0

如果您使用的是 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

于 2012-06-25T19:07:07.727 回答