Остался вопрос по поводу чтения файлов, а именно самого метода. Ниже как выяснилось верно.
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;
}
На всякий случай прилагаю скриншот, потому что при предпросмотре куда то теряются ключ и значение мапы.