Не понимаю что именно тут не правильно, менял имена файлов, вроде все остаётся в правильном порядке.
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 {
if(args.length<1){
return;
}
File originalFile = new File(args[1]);
File newFile = new File(originalFile.getParent() + "/allFilesContent.txt");
if (FileUtils.isExist(originalFile)) {
FileUtils.renameFile(originalFile, newFile);
}
File startingDir = new File(args[0]);
PriorityQueue<File> queue = new PriorityQueue<>();
PriorityQueue<File> files = new PriorityQueue<>();
queue.add(startingDir);
while(!queue.isEmpty()){
File current = queue.poll();
File[] filesInDir = current.listFiles();
if(filesInDir!=null){
for (File fd: filesInDir) {
if(fd.isDirectory()){
queue.add(fd);
}
if(fd.length()<=50){
files.add(fd);
}
}
}
}
List<String> fileNames = new ArrayList<>();
for (File file: files
) {
fileNames.add(file.getAbsolutePath());
}
fileNames.sort(new Comparator<String>() {
@Override
public int compare(String o1, String o2) {
int first = o1.lastIndexOf("/");
int second = o2.lastIndexOf("/");
o1.substring(first,o1.length());
o2.substring(second,o2.length());
return o2.compareTo(o1);
}
});
try(FileWriter writer = new FileWriter(newFile)){
for (String str:fileNames){
BufferedReader reader = new BufferedReader(new FileReader(str)) ;
while (reader.ready()) {
writer.write(reader.readLine());
}
writer.write("\n");
reader.close();
}
}
}
}