Не пойму логики валидатора?
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 {
File file1 = new File(args[1]);
File file0 = new File(args[0]);
File file2 = new File(file1.getParent()+"/allFilesContent.txt");
FileUtils.renameFile(file1,file2);
FileOutputStream fos = new FileOutputStream (file2, true);
ArrayList<File[]> st1 = new ArrayList<>();
ArrayList<File> st2 = new ArrayList<>();
st1.add(file0.listFiles());
for (int i = 0; i<st1.size();i++){
for(int j=0; j<st1.get(i).length;j++){
if(st1.get(i)[j].isDirectory()){
st1.add(st1.get(i)[j].listFiles());
}
}
}
for (int i = 0; i<st1.size();i++) {
for (int j = 0; j < st1.get(i).length; j++) {
if(st1.get(i)[j].isFile() && st1.get(i)[j].length()<=50 && !st1.get(i)[j].getName().equals("allFilesContent.txt")){
st2.add(st1.get(i)[j]);
}
}
}
boolean needInteration = true;
while(needInteration){
needInteration = false;
for(int i = 0;i<st2.size()-1; i++){
if(st2.get(i).getName().compareTo(st2.get(i+1).getName())>0) {
File file = st2.get(i);
st2.set(i, st2.get(i + 1));
st2.set(i + 1, file);
needInteration=true;
}
}
}
String z = "\n";
for(File x: st2){
FileInputStream fis = new FileInputStream(x);
while(fis.available()>0){
fos.write(fis.read());
if(fis.available()==1) {
fos.write(fis.read());
fos.write(z.getBytes());
}
}
fis.close();
}
fos.close();
}
}