У меня есть приложение 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?