Братцы, выручайте...
Третий день бьюсь. Задача интересная и работает вроде все как надо, а валидатор не пропускает...
Где тут собака порылась?
package com.javarush.task.task31.task3101;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.nio.file.*;
import java.nio.file.attribute.BasicFileAttributes;
import java.util.EnumSet;
import java.util.Map;
import java.util.TreeMap;
import java.util.*;
import java.io.*;
/*
Проход по дереву файлов
*/
public class Solution {
public static void main(String[] args) {
File folder = new File(args[0]);
File source = new File(args[1]);
File destination = new File(source.getParent() + "/allFilesContent.txt");
if (FileUtils.isExist(source))
FileUtils.renameFile(source, destination);
Queue<File> queue = new PriorityQueue<>(); //Эта очередь куда складываем все найденные файлы
if (FileUtils.isExist(folder))
Collections.addAll(queue, folder.listFiles()); //Загнали в очередь все файлы, которые нашли в директории
//В цикле возьмем из очереди нужные нам файлы и поместим в list
List<File> list = new ArrayList<>();
//Пока очередь не опустеет
while (!queue.isEmpty()){
File currentFile = queue.remove(); //забираем из очереди файл
//тут небольшая рекурсия
if (currentFile.isDirectory()) { //Если файл взятый из очереди = директория...
Collections.addAll(queue, currentFile.listFiles()); //Загоняем все файлы находящиеся в этой директории обратно в очередь
} else if (currentFile.isFile() && currentFile.length() <= 50){ //Если же файл = просто файл и он менее 50 байт
list.add(currentFile); //доавляем его в лист
}
}
//Отсортировали лист по имени файла
list.sort(Comparator.comparing(File::getName));
//for (File file : list) System.out.println(file.getName()); //Проверил. Ништяк отсортировался
//В цикле перебрали каждый файл в листе, взяли из него строки и переписали в дестинейшн
try {
PrintWriter writer = new PrintWriter(destination);
for (File file : list){
Scanner reader = new Scanner(file);
while (reader.hasNextLine()){
writer.println(reader.nextLine());
}
writer.println("\n");
reader.close();
}
writer.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}