Сортировка, файлы с одинаковыми именами, подпапки. Всё отрабатывает. Где я ошибся?
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 void main(String[] args) {
String resultFileName=args[1], folderName=args[0];
//String resultFileName="L:/Armageddec.txt", folderName="L:/Test";
File folder=new File(folderName);
File resultFile=new File(resultFileName);
String newFileName=resultFileName.substring(0,resultFileName.lastIndexOf('/'))+"/allFilesContent.txt";
if (FileUtils.isExist(resultFile)) FileUtils.renameFile(resultFile,new File(newFileName));
resultFile=new File(newFileName);
List<File>folders=new ArrayList<>();
try(FileOutputStream fw =new FileOutputStream(resultFile)){
if (FileUtils.isExist(folder)&&folder.isDirectory()){
Map<File,String>treeMap=new HashMap<>();
folders.add(folder);
int chkPointer= folders.size();
while (chkPointer>0){
File tmp=folders.get(0);
if (tmp.listFiles().length>0){
for (File file:tmp.listFiles()
) {
if (file.isDirectory())folders.add(file);
else {
try {
byte[] content=Files.readAllBytes(Paths.get(file.getAbsolutePath()));
if (content.length<=50){
String fileName=file.getName();
treeMap.put(file, new String(content, StandardCharsets.UTF_8));
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
folders.remove(0);
chkPointer= folders.size();
}
List<Object> sorted_list=Arrays.asList(treeMap.keySet().toArray());
Collections.sort(sorted_list, new Comparator<Object>() {
@Override
public int compare(Object o1, Object o2) {
File fo1=(File)o1;
File fo2=(File)o2;
return fo1.getName().compareTo(fo2.getName());
}
});
for (Object x:sorted_list
) {
for (Map.Entry<File,String> entry:treeMap.entrySet()
) {
if (x.equals(entry.getKey())) {
StringBuilder fileString = new StringBuilder(entry.getValue());
fileString.append("\n");
fw.write(fileString.toString().getBytes(StandardCharsets.UTF_8));
break;
}
}
}
fw.flush();
fw.close();
}
}
catch (Exception e){e.printStackTrace();}
}
}
ааа. ну в любом случае у него ещё вот тут косяк.Содержимое всех файлов, размер которых не превышает 50 байт, должно быть записано в файл allFilesContent.txt в отсортированном по имени файла порядке. он в качестве имени файла кладёт