Пробовал решение со старым добрым BufferedWriter и с новомодным Files и Paths.
Вот как я могу выполнить 3 условие валидатора нарушив 2?
package com.javarush.task.task31.task3101;
import java.io.*;
import java.nio.charset.StandardCharsets;
import java.nio.file.*;
import java.nio.file.attribute.BasicFileAttributes;
import java.util.*;
/*
Проход по дереву файлов
*/
public class Solution {
public static List<String> getFileTree(String root) throws IOException {
List<String> result = new ArrayList<>();
Queue<File> stack = new LinkedList<>();
stack.add(new File(root));
while (!stack.isEmpty()){
File current = stack.poll();
File[] fileDirList = current.listFiles();
if (fileDirList !=null){
for (File fileInDir : fileDirList){
if (fileInDir.isDirectory()) stack.add(fileInDir);
else if (fileInDir.length()<=50) result.add(fileInDir.getAbsolutePath());
}
}
}
return result;
}
public static void main(String[] args) throws IOException {
String path = args[0];
String resultFileAbsolutePath = args[1];
File resultFile = new File(resultFileAbsolutePath);
File dest = new File(resultFile.getParentFile() + "/allFilesContent.txt");
if (FileUtils.isExist(dest)) {
FileUtils.deleteFile(dest);
}
FileUtils.renameFile(resultFile, dest);
List<String> allFilePath = getFileTree(path);
allFilePath.sort((o1, o2) -> {
File file1 = new File(o1);
File file2 = new File(o2);
return file1.getName().compareTo(file2.getName());
});
try (BufferedWriter writer = new BufferedWriter(new FileWriter(dest))) {
for (String filePath: allFilePath) {
String str;
BufferedReader reader = new BufferedReader(new FileReader(filePath));
while ((str = reader.readLine()) != null) {
writer.write(str);
writer.newLine();
writer.flush();
}
}
//System.out.println("Done");
}
/*
try (FileOutputStream fileOutputStream = new FileOutputStream(dest)) {
for (String filePath: allFilePath){
File current = new File(filePath);
fileOutputStream.write(Files.readAllBytes(Paths.get(filePath)));
fileOutputStream.write("\n".getBytes());
}
}
*/
}
}