我的包结构类似于
src
main
java
com
org
-- Loader.java
resources
schemas
-- a.schema
-- b. schema
现在我希望能够访问schema文件夹下的模式列表,这些模式可能会随着Loader类的时间而变化。我将其打包为jar,并在运行时访问schema文件夹下的所有文件。我该怎么办?
答案 0 :(得分:1)
在Loader.java中执行此操作:
InputStream in = Loader.class.getResourceAsStream("/data/schemas/a.schema");
前导斜杠表示从类路径的根开始(即您的JAR文件)。
答案 1 :(得分:0)
使用java 8,你应该很容易理解。见下面的代码:
import java.util.stream.*;
import java.nio.file.*;
import java.util.*;
import java.io.*;
public class HelloWorld{
public static void main(String []args) throws IOException {
try (Stream<Path> filePathStream = Files.walk(Paths.get("/data/schemas/"))) {
List<File> filesInFolder = filePathStream.filter(Files::isRegularFile)
.map(Path::toFile)
.collect(Collectors.toList());
System.out.println(filesInFolder);
}
}
}
这里的try-with-resource结构确保在使用后自动关闭流。