Валидатор просить открыть и закрыть поток для записи, но ведь он у меня уже открыт и закроется автоматически, так как AutoCloseable.
package com.javarush.task.task31.task3101;
import java.io.*;
import java.nio.file.*;
import java.nio.file.attribute.BasicFileAttributes;
import java.util.*;
import java.util.stream.Collectors;
import java.util.stream.Stream;
/*
Проход по дереву файлов
*/
public class Solution {
public static void main(String[] args) {
String path = args[0];
String resultFileAbsolutePath = args[1];
File resultFile = new File(resultFileAbsolutePath);
File dest = new File(resultFile.getParent() + "/allFilesContent.txt");
if (FileUtils.isExist(dest)) {
FileUtils.deleteFile(dest);
}
FileUtils.renameFile(resultFile, dest);
List<Path> files = getFiles(path);
try (FileOutputStream fileOutputStream = new FileOutputStream(dest, true)) {
for (Path file : files) {
fileOutputStream.write(Files.readAllBytes(file));
fileOutputStream.write("\n".getBytes());
}
} catch (IOException e) {
e.printStackTrace();
}
}
public static List<Path> getFiles(String rootPath) {
List<Path> result = new ArrayList<>();
try (Stream<Path> walk = Files.walk(Paths.get(rootPath))) {
result = walk
.filter(Files::isReadable)
.filter(p -> !Files.isDirectory(p))
.filter(p -> new File(String.valueOf(p)).length() <= 50)
.collect(Collectors.toList());
} catch (IOException e) {
e.printStackTrace();
}
Collections.sort(result);
return result;
}
public static void writeAll(List<Path> files, File contentFile) {
try (FileOutputStream fileOutputStream = new FileOutputStream(contentFile, true)) {
for (Path path : files) {
fileOutputStream.write(Files.readAllBytes(path));
fileOutputStream.write("\n".getBytes());
}
} catch (IOException e) {
e.printStackTrace();
}
}
}