Полный текст Solution. Класс FileUnits без изменений
package com.javarush.task.task31.task3101;
import java.io.*;
import java.util.*;
/*
Проход по дереву файлов
*/
public class Solution {
static ArrayList<File> fileSet = new ArrayList<File>();
public static void main(String[] args) {
// if (args.length == 0) return;
File path = new File(args[0]);
File resultFileAbsolutePath = new File(args[1]);
File allFilesContent = new File(resultFileAbsolutePath.getParent() + "allFilesContent.txt");
//заполнение списка файлов рекурсивной функцией
recursiveFill(path);
//сортировка списка файлов по возрастанию
Collections.sort(fileSet, new MyFileComparator());
//переименование полученого файла согласно условиям задачи
FileUtils.renameFile(resultFileAbsolutePath,
allFilesContent);
//открываю файл для чтения, еще один для записи
//копирую содержимое всех файлов поочередно в один
BufferedReader reader;
FileWriter targetWriter;
try {
targetWriter = new FileWriter(allFilesContent);
for (File file: fileSet) {
reader = new BufferedReader(new FileReader(file));
while (reader.ready()) {
targetWriter.write(reader.readLine());
}
reader.close();
targetWriter.write("\n");
}
targetWriter.close();
} catch (IOException e) {
System.out.println("Can't write file");
}
}
//рекурсивный проход папки-параметра с занесение в список файлов length <= 50
public static void recursiveFill(File source) {
for (File component: source.listFiles()) {
if (component.isDirectory())
recursiveFill(component);
else {
if (component.length() > 50)
FileUtils.deleteFile(component);
else
fileSet.add(component);
}
}
}
//компаратор для сортировку списка файлов по названию в порядке возрастания
static class MyFileComparator implements Comparator<File> {
@Override
public int compare(File o1, File o2) {
return o1.getName().compareTo(o2.getName());
}
}
public static void deleteFile(File file) {
if (!file.delete()) System.out.println("Can not delete file with name " + file.getName());
}
}
не могу понять: по условиям задачи файл для результата уже должен существовать до выполнения задачи?
package com.javarush.task.task31.task3101;
import java.io.*;
import java.util.*;
/*
Проход по дереву файлов
*/
public class Solution {
static ArrayList<File> fileSet = new ArrayList<File>();
public static void main(String[] args) {
// if (args.length == 0) return;
File path = new File(args[0]);
File resultFileAbsolutePath = new File(args[1]);
File allFilesContent = new File(resultFileAbsolutePath.getParent() + "allFilesContent.txt");
//заполнение списка файлов рекурсивной функцией
recursiveFill(path);
//сортировка списка файлов по возрастанию
Collections.sort(fileSet, new MyFileComparator());
//переименование полученого файла согласно условиям задачи
FileUtils.renameFile(resultFileAbsolutePath,
allFilesContent);
//открываю файл для чтения, еще один для записи
//копирую содержимое всех файлов поочередно в один
BufferedReader reader;
FileWriter targetWriter;
try {
targetWriter = new FileWriter(allFilesContent);
for (File file: fileSet) {
reader = new BufferedReader(new FileReader(file));
while (reader.ready()) {
targetWriter.write(reader.readLine());
}
reader.close();
targetWriter.write("\n");
}
targetWriter.close();
} catch (IOException e) {
System.out.println("Can't write file");
}
}
//рекурсивный проход папки-параметра с занесение в список файлов length <= 50
public static void recursiveFill(File source) {
for (File component: source.listFiles()) {
if (component.isDirectory())
recursiveFill(component);
else {
if (component.length() > 50)
FileUtils.deleteFile(component);
else
fileSet.add(component);
}
}
}
//компаратор для сортировку списка файлов по названию в порядке возрастания
static class MyFileComparator implements Comparator<File> {
@Override
public int compare(File o1, File o2) {
return o1.getName().compareTo(o2.getName());
}
}
public static void deleteFile(File file) {
if (!file.delete()) System.out.println("Can not delete file with name " + file.getName());
}
}