如何使用URI从资源文件夹的子文件夹中读取文件
How to read files from the sub folder of resource folder.
资源文件夹中有一些json文件,如:
src
main
resources
jsonData
d1.json
d2.json
d3.json
现在我想在我的课堂上读这个
src
main
java
com
myFile
classes
这是我正在尝试的。
File[] fileList = (new File(getClass().getResource("/jaonData").toURI())).listFiles();
for (File file : listOfFiles) {
if (file.isFile()) {
// my operation of Data.
}
}
我的东西工作正常,但我遇到的问题是我不想使用< code>toURI,因为它会失败。
你可能没有使用Spring Boot,所以如何在spring boot中从资源文件中读取文件夹:从Jar运行时出错对你没有太大帮助。
我将重复我自己对那个问题的评论:
JAR文件中的所有内容都不是文件,无法使用File
、FileInputStream
等访问。没有官方机制来访问JAR文件中的目录。
幸运的是,有一种非官方的方法,它利用了这样一个事实,即您可以将JAR文件作为一个单独的文件系统打开。
下面是一种既适用于基于文件的文件系统又适用于JAR文件中的资源的方法:
private void process() throws IOException {
Path classBase = getClassBase();
if (Files.isDirectory(classBase)) {
process(classBase);
} else {
// classBase is the JAR file; open it as a file system
try (FileSystem fs = FileSystems.newFileSystem(classBase, getClass().getClassLoader())) {
Path root = fs.getPath("/");
return loadFromBasePath(root);
}
}
}
private Path getClassBase() {
ProtectionDomain protectionDomain = getClass().getProtectionDomain();
CodeSource codeSource = protectionDomain.getCodeSource();
URL location = codeSource.getLocation();
try {
return Paths.get(location.toURI());
} catch (URISyntaxException e) {
throw new IllegalStateException(e);
}
}
private void processRoot(Path root) throws IOException {
// use root as if it's either the root of the JAR, or target/classes
// for instance
Path jsonData = root.resolve("jsonData");
// Use Files.walk or Files.newDirectoryStream(jsonData)
}
如果您不喜欢使用ProtectDomain
,则可以使用另一个小技巧,该技巧利用了每个类文件都可以作为资源读取的事实:
private Path getClassBase() {
String resourcePath = '/' + getClass().getName().replace('.', '/') + ".class";
URL url = getClass().getResource(resourcePath);
String uriValue = url.toString();
if (uriValue.endsWith('!' + resourcePath)) {
// format: jar:<file>!<resourcePath>
uriValue = uriValue.substring(4, uriValue.length() - resourcePath.length() - 1);
} else {
// format: <folder><resourcePath>
uriValue = uriValue.substring(0, uriValue.length() - resourcePath.length());
}
return Paths.get(URI.create(uriValue));
}
如何从资源文件夹的子文件夹中读取文件。 我在资源文件夹中有一些json文件,例如: 现在我想在我的课堂上读到这个 这是我正在尝试的,但是失败了。 不起作用,那么我正在尝试: 这两样东西都不工作。
我有一个名为的项目,它有以下结构: 所以这两个文件的路径是: 我想读测试文件。TestDataProvider中的json。JAVA 我曾经用过 我看到从URL res=getClass(). getClassLoader(). getResources("testfile.json")返回; 有人能帮我吗?
问题内容: 我正在使用Spring Boot和。我正在尝试从文件夹读取一个文件。我尝试了几种不同的方法,但无法正常工作。这是我的代码。 这是文件的位置。 在这里,我可以看到文件夹中的文件。 但是,当我运行代码时,出现以下错误。 我在代码中做错了什么? 问题答案: 在花费大量时间尝试解决此问题之后,终于找到了可行的解决方案。该解决方案利用了Spring的ResourceUtils。也应该适用于jso
我有一个资源文件夹/包在我的项目的根,我"不"想要加载某个文件。如果我想加载某个文件,我会使用class.getResourceAsStream,我会没事的!!我实际上想做的是在资源文件夹中加载一个“文件夹”,循环该文件夹中的文件,并获得每个文件的流,并在内容中读取...假设在运行时之前没有确定文件名...那我该怎么办?有没有一种方法来获得一个文件夹中的文件列表在您的jar文件?请注意,带有资源的
我正在尝试从子项目中读取文件示例-dfx-sbi 文件位于src/main/resources文件夹内 那为什么文件没有加载呢?
以下是我得到的错误: 提前感谢!