Никак не могу понять почему я не создаю поток записи и не закрываю его. Пробовал и PrintWriter и BufferedWriter.
Помогите пожалуйста.
package com.javarush.task.task31.task3101;
import java.io.*;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Comparator;
import java.util.List;
import java.util.stream.Collectors;
/*
Проход по дереву файлов
*/
public class Solution {
public static void makeListOfFiles(String directoryName, List<File> files) {
File directory = new File(directoryName);
File[] fList = directory.listFiles();
if(fList != null)
for (File file : fList) {
if (file.isFile()) {
files.add(file);
} else if (file.isDirectory()) {
makeListOfFiles(file.getAbsolutePath(), files);
}
}
}
public static void main(String[] args) throws IOException {
File path = new File(args[0]);
File fileName = new File(args[1]);
File result = new File(fileName.getParent() + "\\allFilesContent.txt");
FileUtils.renameFile(fileName, result);
ArrayList<File> fileList = new ArrayList<>();
makeListOfFiles(path.getAbsolutePath(), fileList);
ArrayList<File> list = fileList.stream()
.filter(x -> x.length()<=50)
.sorted(Comparator.comparing(File::getName))
.collect(Collectors.toCollection(ArrayList::new));
OutputStream writer = new FileOutputStream(result);
for (File filesArray : list) {
try (BufferedReader reader = new BufferedReader(new FileReader(filesArray))) {
while (reader.ready()) {
writer.write(reader.read());
}
writer.write('\n');
} catch (IOException e) {
e.printStackTrace();
}
}
writer.flush();
writer.close();
}
}