Не могу понять, почему не пропускает валидатор...
package com.javarush.task.task31.task3101;
//import com.sun.java.util.jar.pack.Package;
import java.io.*;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
/*
Проход по дереву файлов
Проход по дереву файлов
1. На вход метода main подаются два параметра.
Первый - path - путь к директории, второй - resultFileAbsolutePath - имя (полный путь) существующего файла, который будет содержать результат.
2. Для каждого файла в директории path и в ее всех вложенных поддиректориях выполнить следующее:
Если у файла длина в байтах НЕ больше 50, то для всех таких файлов:
2.1. Отсортировать их по имени файла в возрастающем порядке, путь не учитывать при сортировке.
2.2. Переименовать resultFileAbsolutePath в 'allFilesContent.txt' (используй метод FileUtils.renameFile, и, если понадобится, FileUtils.isExist).
2.3. В allFilesContent.txt последовательно записать содержимое всех файлов из п. 2.2.1. После каждого тела файла записать "\n".
Все файлы имеют расширение txt.
В качестве разделителя пути используй "/".
Требования:
1. Файл, который приходит вторым параметром в main, должен быть переименован в allFilesContent.txt.
2. Нужно создать поток для записи в переименованный файл.
3. Содержимое всех файлов, размер которых не превышает 50 байт, должно быть записано в файл allFilesContent.txt в отсортированном по имени файла порядке.
4. Поток для записи в файл нужно закрыть.
5. Не используй статические переменные.
*/
public class Solution {
public static void main(String[] args) throws IOException {
String path = args[0]; // "d:/1";
String resultFile = args[1]; // "d:/1.txt";
ArrayList<File> list=new ArrayList<>();
allFilesList( new File(path),list );
Comparator<File> myComparator = new Comparator<File>() {
@Override
public int compare(File o1, File o2) {
return o1.getName().compareTo(o2.getName() ) ;
}
};
list.sort(myComparator);
File resFile = new File(resultFile);
File newNameFile = new File( resFile.getParent()+"\\"+"allFilesContent.txt" );
if (!FileUtils.isExist(resFile))
resFile.createNewFile();
if (FileUtils.isExist(newNameFile))
newNameFile.delete();
FileUtils.renameFile(resFile, newNameFile);
resFile = newNameFile;
FileOutputStream fos = new FileOutputStream(resFile);
for (File fls:list ) {
FileInputStream fis = new FileInputStream(fls);
byte[] ar = new byte[fis.available()];
fis.read(ar);
fos.write(ar) ;
fos.write(10);
fis.close();
}
fos.close();
}
public static void allFilesList(File path , ArrayList<File> resultList ) throws IOException {
File[] files = path.listFiles();
for (File fls:files )
{
if (fls.isDirectory())
allFilesList(fls, resultList);
else {
if (fls.getName().endsWith(".txt") )
{
if ( fls.length()<=50L)
resultList.add(fls);
}
}
}
}
}