Валидатор :"Убедись, что в файл allFilesContent.txt не записываются лишние данные."
когда заменил
char[] ar = new char[25];
reader.read(ar);
writer.write(ar);
на
String line = reader.readLine();
writer.write(line);
- код прошёл проверку.
осталось непонятным, откуда появлялись лишние данные при использовании символьного массива.
или это прихоти реализации валидатора? 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 {
String path = args[0]; // путь к директории
String resultFileAbsolutePath = args[1]; // имя (полный путь) файла,результат.
File resultFile = new File(resultFileAbsolutePath);
String resFlAPn = resultFile.getParent()+"/"+"allFilesContent.txt";
File resultFileN = new File(resFlAPn);
if (FileUtils.isExist(resultFileN))FileUtils.deleteFile(resultFileN);
FileUtils.renameFile(resultFile,resultFileN);
doContent(new File(path), resultFileN);
}
public static void doContent(File filepath, File resultFileN) throws IOException {
Deque<File> stack = new ArrayDeque<>();
TreeMap<String,File> files = new TreeMap<>();
stack.push(filepath);
while(!stack.isEmpty()){
File [] allFiles = stack.pop().listFiles();
for(File entryFl : allFiles) {
if (entryFl.isDirectory()) stack.push(entryFl);
else if(entryFl.length()<=50) files.put(entryFl.getName(),entryFl.getAbsoluteFile());
}
}
try(BufferedWriter writer = new BufferedWriter(new FileWriter(resultFileN,true))) {
for (File flAbsName : files.values()) {
try (BufferedReader reader = new BufferedReader(new FileReader(flAbsName),50)) {
while (reader.ready()) {
char[] ar = new char[25];
reader.read(ar);
writer.write(ar);
}
}
writer.write("\n");
}
}
}
}