Я пытаюсь получить все имена файлов, размер файла и время последнего изменения. Я использую поток для их сбора. См. Коды ниже. Однако, как я думаю, нужны три карты. {File: fileName} {File: fileSize} {File: fileLastMod}. Есть ли способ, которым я могу использовать Stream для сбора в одну карту, например {"name": fileName, "size": fileSize, "time": lastMod} PS: Я думаю, что могу использовать класс для решения этой проблемы. Я думаю, смогу ли я сделать это в потоке.
RegexFileFilter fileFilter;
// if extension is "*" then shows all the file
if (exe.equals("*")) {
fileFilter = new RegexFileFilter(".*\\..*");
}else{
fileFilter = new RegexFileFilter("\\." + exe);
}
ObservableMap<File, String> fileNameMap = FXCollections.observableMap(
FileUtils.listFiles(targetDir, fileFilter, FileFileFilter.FILE)
.stream()
.collect(Collectors.toMap(identity(), File::getName)));
Map<File, Long> fileSize = FileUtils
.listFiles(targetDir, fileFilter, FileFileFilter.FILE)
.stream()
.collect(Collectors.toMap(identity(), FileUtils::sizeOf));
Map<File, Long> fileLastModifyTime = FileUtils
.listFiles(targetDir, fileFilter, FileFileFilter.FILE)
.stream()
.collect(Collectors.toMap(identity(), File::lastModified));