В общем работает, погонял разные тесты. Но не валидирует. Может кто подсказать?(
package com.javarush.task.task31.task3101;
import java.io.*;
import java.util.*;
/*
Проход по дереву файлов
*/
public class Solution {
public static void main(String[] args) throws IOException {
Solution solutionUtils = new Solution();
File path = new File(args[0]);
File resultFile = new File(args[1]);
String newResultFileName = "allFilesContent.txt";
resultFile = solutionUtils.renameFile(resultFile, newResultFileName);
ArrayList<File> fileList = new ArrayList<>();
fileList.addAll(solutionUtils.getListFileInFolder(path));
fileList.removeIf(file -> (!solutionUtils.checkExtension(file, "txt") || file.length() > 50));
fileList.sort(new Comparator<File>() {
@Override
public int compare(File o1, File o2) {
return o1.getName().compareTo(o2.getName());
}
});
FileOutputStream fileOutputStream = null;
try {
fileOutputStream = new FileOutputStream(resultFile);
} catch (FileNotFoundException e) {
e.printStackTrace();
}
FileInputStream fileInputStream = null;
for (int i = 0; i < fileList.size(); i++) {
try {
fileInputStream = new FileInputStream(fileList.get(i).getAbsoluteFile());
while (fileInputStream.available() > 0) {
int data = fileInputStream.read();
fileOutputStream.write(data);
}
if (i != fileList.size() - 1) fileOutputStream.write("\n".getBytes());
} catch (FileNotFoundException e) {
e.printStackTrace();
}
finally {
if (fileInputStream != null) {
fileInputStream.close();
}
}
}
try {
fileOutputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
private List<File> getListFileInFolder(File folder) {
ArrayList<File> fileList = new ArrayList<>();
for (String file: folder.list()) {
File checkedFile = new File(folder.getAbsolutePath() + "/" + file);
if (checkedFile.isDirectory()) {
fileList.addAll(getListFileInFolder(checkedFile));
} else {
fileList.add(checkedFile);
}
}
return fileList;
}
private boolean checkExtension(File file, String extension) {
return getFileExtencion(file).equals(extension);
}
private String getFileExtencion(File file) {
String fileName = file.getName();
int lastIndexOf = fileName.lastIndexOf(".");
return (lastIndexOf == -1)?"":fileName.substring(lastIndexOf + 1);
}
private File renameFile(File file, String newName) {
String newFilePath = file.getParent() + "/" + newName;
if (FileUtils.isExist(file)) {
FileUtils.renameFile(file, new File(newFilePath));
}
return new File(newFilePath);
}
}