Не знаю в чем проблема, во первых, вместо того, чтобы переименовывать файл, программа создает новый файл рядом, и пишет все в старый, но это происходит только если я записываю что-то в файл, если не происходит записи, то файл просто переименовывается. Понятия не имею что не так, переписывал уже дважды, видимо совершаю какую-то глупую ошибку, потому-что проходит только по одному пункту, хотя в целом(кроме создания нового файла по какой-то причине) работает нормально.
UPD: Проблема была указана Egorro в коментариях, спасибо ему большое за это. Несмотря на то что проблема с созданием двух файлов была исправлена, валидатор не пропускает, хотя все вроде как работает нормально.
РЕШЕНИЕ: Для записи нужно отправлять в конструкторе указывать новый файл, и запись нового файла должна быть через слеш
File resultFile = new File(resultFileAbsolutePath.getParent() + "/" + "allFilesContent.txt")
P.S. Рисунок, который возникает, при проверке задачи в idea это фотография кода, связанного с этой задачей. Наверное, если бы мне не понадобилось 26 попыток для того чтобы решить эту задачу я бы этого не заметил)package com.javarush.task.task31.task3101;
import java.io.*;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.TreeSet;
/*
Проход по дереву файлов
*/
public class Solution {
public static void main(String[] args) {
/* String[] args = new String[2];
args[0] = "C:\\JavaRushTasks\\test\\test2";
args[1] = "C:\\JavaRushTasks\\test\\TEST_RESULT.txt";*/
File path = new File(args[0]);
File resultFileAbsolutePath = new File(args[1]);
File resultFile = new File(resultFileAbsolutePath.getParent(),"allFilesContent.txt");
FileUtils.renameFile(resultFileAbsolutePath,resultFile);
/* if (FileUtils.isExist(resultFile)) {
try {
FileOutputStream out = new FileOutputStream(resultFile);
out.write("bbb".getBytes());
out.flush();
out.close();
} catch (Exception e) {
e.printStackTrace();
}
}*/
try(FileOutputStream out = new FileOutputStream(resultFile)){
//FileInputStream in = null;
ArrayList<File> fileArrayList = catchAllFiles(path);
Collections.sort(fileArrayList);
for(File file :fileArrayList ){
FileInputStream in = new FileInputStream(file);
int i;
// int k;
byte[] bytes = new byte[100];
// byte[] bytes1 = "\n".getBytes();
while(in.available() > 0){
i = in.read(bytes);
out.write(bytes,0,i);
// out.write(bytes1);
out.flush();
}
out.write("\n".getBytes());
out.flush();
in.close();
}
//in.close();
}catch (Exception e){
}
}
private static ArrayList<File> catchAllFiles(File path){
ArrayList<File> fileTreeSet = new ArrayList<>();
for(File file : path.listFiles()){
if(file.isDirectory()){
ArrayList<File> list = catchAllFiles(file);
for(File file1 : list){
fileTreeSet.add(file1);
}
} else if(file.length() <= 50 ){
fileTreeSet.add(file);
}
}
return fileTreeSet;
}
}