Не слишком красивый код, но работает чётко. И подпапки смотрит, и в них подпапки (и сколько хотите) и пустые папки, и в файлы отличает, которые меньше 50 байт. Но валидатор не пропускает. В чём дело?
package com.javarush.task.task31.task3101;
import java.io.File;
import java.io.FileOutputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.nio.file.*;
import java.nio.file.attribute.BasicFileAttributes;
import java.util.*;
/*
Проход по дереву файлов
*/
public class Solution {
public static void main(String[] args) throws IOException {
//ПЕРЕИМЕНОВАНИЕ
File resultFileAbsolutePath = new File(args[1]);
File path = new File(args[0]);
File allFilesContent = new File(resultFileAbsolutePath.getParent() + "/allFilesContent.txt");
if (FileUtils.isExist(resultFileAbsolutePath)) {
FileUtils.renameFile(resultFileAbsolutePath, allFilesContent);
}
//ДЛЯ КАЖДОГО ФАЙЛА В PATH
List<File> fileArray = new ArrayList<>();
for (File files:
path.listFiles()) {
if (!files.isDirectory()) {
fileArray.add(files);
} else {
opener(files, fileArray);
}
}
//ЕСЛИ МЕНЬШЕ 50 БАЙТ
List<String> namesArray = new ArrayList<>();
for (File files:
fileArray) {
if (!(files.length() > 50)) {
namesArray.add(files.getName());
}
}
Collections.sort(namesArray);
FileWriter fileWriter = new FileWriter(allFilesContent, false);
for (String str:
namesArray) {
fileWriter.write(str + '\n');
}
fileWriter.flush();
fileWriter.close();
}
public static void opener(File file, List list) {
for (File files:
file.listFiles()) {
if (!files.isDirectory()) {
list.add(files);
} else {
opener(files, list);
}
}
}
}