gpt4 book ai didi

java - 打包的 Jar 无法从映射的网络驱动器读取文件 (Windows)

转载 作者:行者123 更新时间:2023-12-02 01:40:18 27 4
gpt4 key购买 nike

我有一个 Spring Boot 应用程序,它读取映射网络驱动器上的文件夹中的文件,即 m:/Production

问题是,当我执行 jar 文件时,我的调试输出显示该文件夹中不存在文件,即使该文件夹充满了文件。

我在同一台计算机上安装了 IntelliJ,如果我从其源代码运行该应用程序,它绝对可以正常工作。

我将文件名读取到数组的方法是;

private File[] getFilesInPath(String path) {
File folder = new File(path);
File[] listOfFiles = folder.listFiles();

if (listOfFiles != null) {
Arrays.sort(listOfFiles, Comparator.comparingLong(File::lastModified));
}

return listOfFiles;
}

然后,我从应用程序中的多个位置调用此函数,这是一个示例;

public void manuallyProcessAttritionData(List<Line> lines) {
Handler handler = new AttritionHandler().setLines(lines).setService(this);

String pathToProcess = dataFolder + attritionFolder;
log.debug("Processing path: " + pathToProcess);
File[] listOfFiles = getFilesInPath(pathToProcess);
if (listOfFiles != null) {
log.debug("Number of files to process: " + listOfFiles.length);
for (File file : listOfFiles) {
handler.processFile(file);
}
} else {
log.debug("No files to process");
}
}

运行上面的输出是;

Processing ATTRITION data...
Processing path: m:/PRODUCTION
No files to process
...Finished processing ATTRITION data

我已经确认路径是正确的,从命令行运行以下命令工作正常,并且结果中有文件;

cd m:\PRODUCTION
M:\PRODUCTION>

有谁知道为什么可以从 IntelliJ 中运行的应用程序中完美地读取该文件夹,但在打包为 JAR 文件时却不能读取该文件夹?

最佳答案

看起来您的开发帐户 Intellij 可以访问此驱动器,而启动此 spring-boot 的帐户则无权访问它。

我建议使用完整路径而不是映射的网络路径。

关于java - 打包的 Jar 无法从映射的网络驱动器读取文件 (Windows),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54536420/

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