Господа, покритикуйте пожалуйста код.
Программа работает.
Что ждет от меня валиадтор - уже не интересно. Хотя.. :)
package com.javarush.task.task31.task3101;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.Comparator;
/*
Проход по дереву файлов
*/
public class Solution {
//5. Не используй статические переменные.
public static void main(String[] args) {
Path folderPath = Paths.get(args[0]);
File fileToRename = new File(args[1]);
File fileOutput = new File(fileToRename.getParent(), "allFilesContent.txt");
//* 1. Файл, который приходит вторым параметром в main, должен быть переименован в allFilesContent.txt.
if (!FileUtils.isExist(fileOutput) && !fileToRename.renameTo(fileOutput)) {
System.out.println("rename failed");
}
// 2. Нужно создать поток для записи в переименованный файл.
// 4. Поток для записи в файл нужно закрыть.
try (FileOutputStream fileTo = new FileOutputStream(fileOutput, true)) {
// * 3. Содержимое всех файлов, размер которых не превышает 50 байт, должно быть записано
// в файл allFilesContent.txt в отсортированном по имени файла порядке.
Files.walk(folderPath).filter(path -> {
try {
//System.out.println("get size " + path + " " + Files.size(path));
long size = Files.size(path);
//Содержимое всех файлов, размер которых не превышает 50 байт, должно быть записано в файл
// allFilesContent.txt в отсортированном по имени файла порядке.
return size <= 50 && size != 0;
} catch (IOException e) {
//System.out.println("cant get size");
}
return false;
}).sorted(Comparator.comparing(Path::getFileName)).forEach(path -> { //в отсортированном по имени файла порядке.
try (FileInputStream fileFrom = new FileInputStream(path.toFile())) {//Поток для записи в файл нужно закрыть
byte[] buffer = new byte[fileFrom.available()];
int numberOfBytes = fileFrom.read(buffer);
fileTo.write(buffer, 0, numberOfBytes);
fileTo.write("\n".getBytes(StandardCharsets.UTF_8));
//System.out.println("wrote " + numberOfBytes + "bytes from " + path);
} catch (IOException e) {
}
});
} catch (IOException e) {
}
}
}