Убедись, что в файл allFilesContent.txt не записываются лишние данные.
Что не так?
package com.javarush.task.task31.task3101;
import java.io.*;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
/*
Проход по дереву файлов
*/
public class Solution {
public static void main(String[] args) {
Path path = Paths.get(args[0]);
File result = new File(args[1]);
List<File> files = new ArrayList<>();
File directory = new File(String.valueOf(path));
addFiles(directory, files);
sortByName(files);
File content = getFile(result);
try (BufferedWriter bw = new BufferedWriter(new FileWriter(content, true))) {
for (int i = 0; i < files.size(); i++) {
// if (i != 0) bw.write("\n");
bw.write(getContent(files.get(i)));
}
} catch (IOException e) {
e.printStackTrace();
}
}
public static String getContent(File file) {
StringBuilder sb = new StringBuilder();
try (BufferedReader br = new BufferedReader(new FileReader(file))) {
String line = null;
while ((line = br.readLine()) != null) {
sb.append(line);
}
} catch (IOException e) {
e.printStackTrace();
}
sb.append("\n");
return sb.toString();
}
//rename file name for result
public static File getFile(File file) {
File newResult = new File(file.getParent() + "/allFilesContent.txt");
FileUtils.renameFile(file, newResult);
return newResult;
}
//Get all files from directory when size < 50
public static void addFiles(File file, List<File> files) {
File[] list = file.listFiles();
for (int i = 0; i < list.length; i++) {
if (list[i].isFile() && list[i].length() <= 50*8) {
files.add(list[i]);
}
else if (list[i].isDirectory())
addFiles(list[i], files);
}
}
//Sort files by name
public static void sortByName(List<File> files) {
files.sort(new Comparator<File>() {
@Override
public int compare(File o1, File o2) {
String file1 = o1.getName();
String file2 = o2.getName();
return file1.compareTo(file2);
}
});
}
}