Остался вопрос по поводу чтения файлов, а именно самого метода.
Ниже как выяснилось верно.
public static void getAllFiles(File path, TreeMap<String, File> fileInDirectory) {
File[] listingFiles = path.listFiles();
for (File listingFile : listingFiles) {
if (listingFile.isFile() && listingFile.length() <= 50 && listingFile.getName().contains(".txt")) {
fileInDirectory.put(listingFile.getName(),listingFile);
} else if (listingFile.isDirectory()) {
getAllFiles(listingFile, fileInDirectory);
}
}
}
Вопрос собственно вот в чем, почему, если мы делает так мапа все время перезаписывает себя при рекурсии. Объявить ее статиком ж по идее нельзя. Мне просто не совсем понятен факт того, что мы в правильном методе записываем в какую-то абстрактную мапу, которой по идее и нет в методе, может я что-то упустил в курсе, не могу понять. Подскажите где почитать по возможности.
P.S. Я понимаю, что при повторном вызове метода у нас опять создается мапа (пустая), но не понимаю как этого избежать.
public static TreeMap<String, File> getAllFiles(File path) {
TreeMap<String, File> fileInDirectory = new TreeMap<>();
File[] listingFiles = path.listFiles();
for (File listingFile : listingFiles) {
if (listingFile.isFile() && listingFile.length() <= 50 && listingFile.getName().contains(".txt")) {
fileInDirectory.put(listingFile.getName(),listingFile);
} else if (listingFile.isDirectory()) {
getAllFiles(listingFile);
}
}
return fileInDirectory;
}
На всякий случай прилагаю скриншот, потому что при предпросмотре куда то теряются ключ и значение мапы.