Проходил по всем файлам через Queue
package com.javarush.task.task31.task3101;
import java.io.*;
import java.nio.file.FileVisitResult;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.*;
/*
Проход по дереву файлов
*/
public class Solution {
public static void main(String[] args) throws IOException {
File file1=new File(args[1]);
File file= new File(file1.getParent()+ "/allFilesContent.txt");
FileUtils.renameFile(file1, file );
ArrayList<String> filenames=find(args[0]);
Collections.sort(filenames);
FileWriter fileWriter=new FileWriter(file);
BufferedWriter bufferedWriter=new BufferedWriter(fileWriter);
for(String b: filenames){
BufferedReader reader=new BufferedReader(new FileReader(b));
while (reader.ready()){
bufferedWriter.write(reader.readLine());
}
bufferedWriter.write('\n');
}
fileWriter.close();
}
public static ArrayList<String> find(String root){
Queue<File> queue=new LinkedList<File>();
ArrayList<String> list=new ArrayList<String>();
File rootfile=new File(root);
if(rootfile.isDirectory()){
Collections.addAll(queue, rootfile.listFiles());
}
while (!queue.isEmpty()){
File currentFile = queue.remove();
if(currentFile.isDirectory()){
Collections.addAll(queue, currentFile.listFiles());
} else {
if(currentFile.length()<=50) list.add(currentFile.getName());
}
}
return list;
}
}