gpt4 book ai didi

java - 在 SpringBoot 2.0.1.RELEASE 应用程序中读取文件

转载 作者:搜寻专家 更新时间:2023-11-01 04:05:27 25 4
gpt4 key购买 nike

我有一个 SpringBoot 2.0.1.RELEASE mvc 应用程序。在资源文件夹中,我有一个名为/elcordelaciutat 的文件夹。

在 Controller 中我有这个方法来读取文件夹中的所有文件

ClassLoader classLoader = this.getClass().getClassLoader();
Path configFilePath = Paths.get(classLoader.getResource("elcordelaciutat").toURI());

List<String> cintaFileNames = Files.walk(configFilePath)
.filter(s -> s.toString().endsWith(".txt"))
.map(p -> p.subpath(8, 9).toString().toUpperCase() + " / " + p.getFileName().toString())
.sorted()
.collect(toList());

return cintaFileNames;

运行应用程序。来自 Eclipse 的工作正常,但是当我在 Windows Server 中运行该应用程序时,出现此错误:

java.nio.file.FileSystemNotFoundException: null
at com.sun.nio.zipfs.ZipFileSystemProvider.getFileSystem(ZipFileSystemProvider.java:171)
at com.sun.nio.zipfs.ZipFileSystemProvider.getPath(ZipFileSystemProvider.java:157)
at java.nio.file.Paths.get(Unknown Source)
at

我解压生成的 jar 文件,文件夹就在那里!

文件夹的结构是

elcordelaciutat/folder1/*.txt
elcordelaciutat/folder2/*.txt
elcordelaciutat/folder3/*.txt

最佳答案

当您从 Eclipse 启动项目时,生成的类文件和资源实际上只是硬盘上的文件和文件夹。这就是使用 File 类迭代这些文件的原因。

当您构建一个jar 时,所有内容实际上都被压缩并存储在一个存档中。您不能再使用文件系统级工具访问它,因此您的 FileNotFound 异常。

用 JarURL 尝试这样的事情:

JarURLConnection connection = (JarURLConnection) url.openConnection();
JarFile file = connection.getJarFile();
Enumeration<JarEntry> entries = file.entries();
while (entries.hasMoreElements()) {
JarEntry e = entries.nextElement();
if (e.getName(). endsWith("txt")) {
// ...
}
}

关于java - 在 SpringBoot 2.0.1.RELEASE 应用程序中读取文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49774517/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com