Проверял, все работает, но валидатор не пропускает. Делал через TreeMap.
package com.javarush.task.task31.task3101;
import java.io.*;
import java.nio.file.*;
import java.nio.file.attribute.BasicFileAttributes;
import java.util.*;
/*
Проход по дереву файлов
*/
public class Solution {
public static void main(String[] args) throws IOException {
File file = new File(args[1]/*"C:\\Users\\User\\Desktop\\res.txt"*/);
File resultFile = new File(file.getParent()+"\\allFilesContent.txt");
if (FileUtils.isExist(file)){
FileUtils.renameFile(file,resultFile);
}
TreeMap<String, String> fileMap = writeAllFiles(new File(args[0]/*"C:\\Users\\User\\Desktop\\TestDirectory\\"*/));
BufferedWriter writer = new BufferedWriter(new FileWriter(resultFile));
BufferedReader reader;
for(Map.Entry<String, String> pair : fileMap.entrySet()){
System.out.println(pair.getKey());
reader = new BufferedReader(new FileReader(pair.getValue()+"\\"+pair.getKey()));
while (reader.ready())
writer.write(reader.readLine());
writer.write("\n");
reader.close();
}
writer.close();
}
private static TreeMap<String, String> writeAllFiles(File currentFile){
TreeMap<String, String> result = new TreeMap<>();
if (currentFile.isDirectory())
for (File file :currentFile.listFiles()){
if (file.isFile()){
if (file.length()<=50) result.put(file.getName(), file.getParent());}
else
result.putAll(writeAllFiles(file));
}
return result;
}
}