Не проходит п.3.
package com.javarush.task.task31.task3101;
import java.io.*;
import java.nio.file.Files;
import java.nio.file.SimpleFileVisitor;
import java.util.*;
/*
Проход по дереву файлов
3. Для каждого файла в директории path и в ее всех вложенных поддиректориях выполнить следующее:
Если у файла длина в байтах НЕ больше 50, то для всех таких файлов:
3.1. Отсортировать их по имени файла в возрастающем порядке, путь не учитывать при сортировке.
3.2. В allFilesContent.txt последовательно записать содержимое всех файлов из п. 3.1. После каждого тела файла записать "\n".
Все файлы имеют расширение txt.
В качестве разделителя пути используй "/".
Для создания файлов используй конструктор File(String pathname).
*/
public class Solution {
public static void main(String[] args) throws IOException {
File path = new File(args[0]);
File resultFileAbsolutePath = new File(args[1]);
// File path = new File("D:/In Out JAVA/Новая папка");
// File resultFileAbsolutePath = new File("D:/In Out JAVA/Новая папка/1.txt");
File allFilesContent = new File(resultFileAbsolutePath.getParent() + "/allFilesContent.txt");
FileUtils.renameFile(resultFileAbsolutePath, allFilesContent);
BufferedWriter writer = new BufferedWriter(new FileWriter(allFilesContent));
writer.close();
List<File> list = recFile(path);
list.sort(Comparator.comparing(File::getName));
for (File f : list) {
BufferedReader reader = new BufferedReader(new FileReader(f));
writer = new BufferedWriter(new FileWriter(allFilesContent, true));
while (reader.ready()) {
writer.write(reader.readLine());
}
writer.flush();
writer.write("\n");
writer.close();
reader.close();
}
// File path = new File("D:\\In Out JAVA\\Новая папка");
// List<File> l = recFile(path);
// for (File file:l)
// System.out.println(file.getAbsolutePath());
}
public static void renameFile(File source, File destination) {
if (!source.renameTo(destination)) System.out.println("Can not rename file with name " + source.getName());
}
public static List<File> recFile(File path) {
List<File> list = new ArrayList<>();
Queue<File> queue = new PriorityQueue<>();
queue.add(path);
while (!queue.isEmpty()) {
File file = queue.poll();
if (file.isDirectory()) {
for (File f : file.listFiles()) queue.add(f);
} else if (file.length() <= 50) list.add(file);
}
return list;
}
}