Подскажите кому не трудно, после довольно длинного перерыва решил попроходить задачи, но валидатор стал еще более загадочным. Все условия, локально проверил, на задачу не зачитывает.
package com.javarush.task.task31.task3101;
import java.io.*;
import java.nio.charset.StandardCharsets;
import java.util.Comparator;
import java.util.Map;
import java.util.TreeMap;
/*
Проход по дереву файлов
*/
public class Solution {
public static void main(String[] args) throws IOException {
TreeMap<String, String> files = new TreeMap<>(new Comparator<String>() {
@Override
public int compare(String o1, String o2) {
File file1 = new File(o1);
File file2 = new File(o2);
int result = file1.getName().compareTo(file2.getName());
if (result == 0) {
result = file1.getAbsolutePath().compareTo(file2.getAbsolutePath());
}
return result;
}
});
File path = new File(args[0]);
File resultFileAbsolutePath = new File(args[1]);
File new_file = new File(resultFileAbsolutePath.getParent() + "/allFilesContent.txt");
if (FileUtils.isExist(new_file)) {
FileUtils.deleteFile(new_file);
}
FileUtils.renameFile(resultFileAbsolutePath, new_file);
tree(path, files);
FileOutputStream fileOutputStream = new FileOutputStream(new_file);
for (Map.Entry<String, String> entry : files.entrySet()) {
String k = entry.getKey();
String v = entry.getValue();
File tmp = new File(k);
String s = "\n";
if (tmp.length() <= 50) {
FileInputStream fIs = new FileInputStream(tmp);
while (fIs.available() > 0)
{
fileOutputStream.write(fIs.read());
}
fileOutputStream.write(s.getBytes(StandardCharsets.UTF_8));
}
}
fileOutputStream.close();
}
public static void tree(File dir, TreeMap<String, String> files) {
if (dir.isFile()) {
files.put(dir.getAbsolutePath(), dir.getName());
} else {
for (File file : dir.listFiles()) {
if (file.isDirectory()) tree(file, files);
if (file.isFile()) files.put(file.getAbsolutePath(), file.getName());
}
}
}
}