Тестил у себя все норм.
public class Solution {
public static void main(String[] args) {
File fileDirectory = new File(args[0]);
File resultFileAbsolutePath = new File(args[1]);
//коллекция для хранения файлов
List<File> fileList = new ArrayList<>();
recurseDirectory(fileDirectory.listFiles(), fileList);
//сортируем файлы по имени , поэтому передаем компаратор
Collections.sort(fileList, (o1, o2) -> o1.getName().compareTo(o2.getName()));
for (File file : fileList) {
System.out.println(file.getName());
}
//создаем файл назначения
File allFilesContent = new File(resultFileAbsolutePath.getParent()+
("allFilesContent.txt"));
if(FileUtils.isExist(resultFileAbsolutePath)){
FileUtils.renameFile(resultFileAbsolutePath,allFilesContent );
if(FileUtils.isExist(resultFileAbsolutePath))FileUtils.deleteFile(resultFileAbsolutePath);
}
//считываем из файлов и записываем в файл назначения
try {
BufferedWriter writeFile = new BufferedWriter(new OutputStreamWriter(
new FileOutputStream(allFilesContent)));
BufferedReader readerFile = null;
for (File file : fileList) {
readerFile = new BufferedReader(new InputStreamReader(new FileInputStream(file)));
while(readerFile.ready()){
writeFile.write(readerFile.read());
}
writeFile.write("\n");
}
readerFile.close();
writeFile.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
/*
* Рекурсивно проходит по массиву файлов если находит дерикторию, получает о5
* массив файлов и так рекурсивно пока не дойдет до листового
* каталога( аналогия с деревьями),
выходя из функции считывает файлы в директории которые меньше 50 байт
* */
public static void recurseDirectory(File[] array, List<File> list){
for (int i = 0; i < array.length; i++) {
if(array[i].isDirectory()) {
System.out.println(array[i].getAbsolutePath());
recurseDirectory(array[i].listFiles(), list);
}
if(array[i].isFile() && array[i].length() < 50){
list.add(array[i]);
}
}
}
}package com.javarush.task.task31.task3101;
import java.io.*;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
/*
Проход по дереву файлов
*/
public class Solution {
public static void main(String[] args) {
File fileDirectory = new File(args[0]);
File resultFileAbsolutePath = new File(args[1]);
//коллекция для хранения файлов
List<File> fileList = new ArrayList<>();
recurseDirectory(fileDirectory.listFiles(), fileList);
//сортируем файлы по имени , поэтому передаем компаратор
Collections.sort(fileList, (o1, o2) -> o1.getName().compareTo(o2.getName()));
for (File file : fileList) {
System.out.println(file.getName());
}
//создаем файл назначения
File allFilesContent = new File(resultFileAbsolutePath.getParent()+
("allFilesContent.txt"));
if(FileUtils.isExist(resultFileAbsolutePath)){
FileUtils.renameFile(resultFileAbsolutePath,allFilesContent );
if(FileUtils.isExist(resultFileAbsolutePath))FileUtils.deleteFile(resultFileAbsolutePath);
}
//считываем из файлов и записываем в файл назначения
try {
BufferedWriter writeFile = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(allFilesContent)));
BufferedReader readerFile = null;
for (File file : fileList) {
readerFile = new BufferedReader(new InputStreamReader(new FileInputStream(file)));
while(readerFile.ready()){
writeFile.write(readerFile.read());
}
writeFile.write("\n");
}
readerFile.close();
writeFile.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
/*
* Рекурсивно проходит по массиву файлов если находит дерикторию, получает о5
* массив файлов и так рекурсивно пока не дойдет до листового каталога( аналогия с деревьями), выходя из функции
* считывает файлы в директории которые меньше 50 байт
* */
public static void recurseDirectory(File[] array, List<File> list){
for (int i = 0; i < array.length; i++) {
if(array[i].isDirectory()) {
System.out.println(array[i].getAbsolutePath());
recurseDirectory(array[i].listFiles(), list);
}
if(array[i].isFile() && array[i].length() < 50){
list.add(array[i]);
}
}
}
}