1. На вход метода main подаются два параметра.
Первый — path — путь к директории, второй — resultFileAbsolutePath — имя файла, который будет содержать результат.
2. Для каждого файла в директории path и в ее всех вложенных поддиректориях выполнить следующее:
2.1. Если у файла длина в байтах больше 50, то удалить его (используй метод FileUtils.deleteFile).
2.2. Если у файла длина в байтах НЕ больше 50, то для всех таких файлов:
2.2.1. Отсортировать их по имени файла в возрастающем порядке, путь не учитывать при сортировке.
2.2.2. Переименовать resultFileAbsolutePath в ‘allFilesContent.txt‘ (используй метод FileUtils.renameFile).
2.2.3. В allFilesContent.txt последовательно записать содержимое всех файлов из п. 2.2.1. Тела файлов разделять «n«.
Все файлы имеют расширение txt.
Требования:
1. Файл, который приходит вторым параметром в main, должен быть переименован в allFilesContent.txt.
2. Нужно создать поток для записи в переименованный файл.
3. Пройдись по всем файлам в директории, которая приходит первым параметром в main, и всех ее поддиректориях. Файлы с размером более 50 байт нужно удалить используя метод FileUtils.deleteFile.
4. Содержимое всех файлов, размер которых не превышает 50 байт, должно быть записано в файл allFilesContent.txt в отсортированном по имени файла порядке.
5. Поток для записи в файл нужно закрыть.
package com.javarush.task.task31.task3101;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.nio.file.*;
import java.nio.file.attribute.BasicFileAttributes;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
/*
Проход по дереву файлов
*/
public class Solution {
public static void main(String[] args) throws IOException {
String path = args[0];
String resultFile = args[1];
String allFilesContent = resultFile.substring(0, resultFile.lastIndexOf("\\") + 1) + "allFilesContent.txt";
FileUtils.renameFile(new File(resultFile), new File(allFilesContent));
final List<File> files = new ArrayList<>();
Path pathDir = Paths.get(path);
try (FileOutputStream outputStream = new FileOutputStream(allFilesContent)) {
Files.walkFileTree(pathDir, new SimpleFileVisitor<Path>() {
public FileVisitResult visitFile(Path file,
BasicFileAttributes fileAttributes) throws IOException {
if (Files.size(file) > 50) {
FileUtils.deleteFile(new File(file.toAbsolutePath().toString()));
} else {
files.add(file.toAbsolutePath().toFile());
}
return FileVisitResult.CONTINUE;
}
});
Collections.sort(files, new Comparator<File>() {
@Override
public int compare(File o1, File o2) {
return o1.getName().compareTo(o2.getName());
}
});
Files.copy(files.get(0).toPath(), outputStream);
for (int i = 1; i < files.size(); i++) {
outputStream.write(System.lineSeparator().getBytes());
Files.copy(files.get(i).toPath(), outputStream);
}
}
}
public static void deleteFile(File file) {
if (!file.delete()) System.out.println("Can not delete file with name " + file.getName());
}
}
Подскажите в чем ошибка??