Помогите пожалуйста разобраться с задачей
package com.javarush.task.task31.task3101;
import java.io.*;
import java.util.Map;
import java.util.TreeMap;
/*
Проход по дереву файлов
1. На вход метода main() подаются два параметра.
Первый - path - путь к директории, второй - resultFileAbsolutePath - имя (полный путь) существующего файла, который будет содержать результат.
2. Переименовать resultFileAbsolutePath в allFilesContent.txt (используй метод FileUtils.renameFile(), и, если понадобится, FileUtils.isExist()).
3. Для каждого файла в директории path и в ее всех вложенных поддиректориях выполнить следующее:
Если у файла длина в байтах НЕ больше 50, то для всех таких файлов:
3.1. Отсортировать их по имени файла в возрастающем порядке, путь не учитывать при сортировке.
3.2. В allFilesContent.txt последовательно записать содержимое всех файлов из п. 3.1. После каждого тела файла записать "\n".
Все файлы имеют расширение txt.
В качестве разделителя пути используй "/".
Для создания файлов используй конструктор File(String pathname).
*/
public class Solution {
public Map<String, File> mapFiles = new TreeMap<String, File>();
public static void main(String[] args) throws IOException {
String path = args[0];
String resultFileAbsolutePath = args[1];
Solution solution = new Solution();
//
File file = new File(resultFileAbsolutePath);
File newFile = new File(file.getParent() + "\\" + "allFilesContent.txt");
if(FileUtils.isExist(file)) {
FileUtils.renameFile(file,newFile);
}
File directory = new File(path);
if(directory.isDirectory()) {
File fileList[] = directory.listFiles();
for (File file1 : fileList) {
solution.recurs(file1);
}
}
FileOutputStream fileOutputStream = new FileOutputStream(newFile);
PrintWriter pw = new PrintWriter(fileOutputStream);
for (Map.Entry<String, File> stringFileEntry : solution.mapFiles.entrySet()) {
BufferedReader fileReader = new BufferedReader(new FileReader(stringFileEntry.getValue()));
for(;fileReader.ready();) {
pw.print(fileReader.readLine());
}
pw.print("\n");
pw.flush();
fileReader.close();
}
pw.close();
fileOutputStream.close();
}
public void recurs(File f) {
if(f.isFile() && f.length()<50) {
mapFiles.put(f.getName(),f);
}
else {
File fileList[] = f.listFiles();
for (File file : fileList) {
recurs(file);
}
}
}
}