локально все работает, мой файл "0.txt" из закомментированной 16ой строки успешно переименовывается в "allFilesContent.txt" и в него записываются все данные из моей тестовой папки (в которой есть другие вложенные папки в папки, в которых есть txt файлы, а так же и папки которые пусты)
есть один момент только - в записанном файле информацию пишется не с новой строки, хотя у меня есть строка
bos.write("\n".getBytes());
вместо переноса у меня добавляется невидимый символ, то есть должно быть вот так:
111
222
333
а у меня вот так:
111222333
но дело в том, что к примеру между 111 и 222 невидимый символ, заметил его когда переключал стрелкой курсорpackage com.javarush.task.task31.task3101;
import java.io.*;
import java.nio.file.*;
import java.nio.file.attribute.BasicFileAttributes;
import java.util.*;
/*
Проход по дереву файлов
*/
public class Solution {
List<File> fileList = new ArrayList<>(); //лист для отобранных файлов
public static void main(String[] args) throws IOException {
// String[] args = {"D:\\wpc\\desktop\\z", "D:\\wpc\\desktop\\e\\0.txt"};
if (args.length >= 2 && args[0] != null && args[1] != null) {
File file = new File(args[1]);
if (FileUtils.isExist(file)) { // проверяем существует ли файл
File file2 = new File(file.getParent() + "/allFilesContent.txt");
FileUtils.renameFile(file, file2); //переименовываем файл
Solution sol = new Solution(); //костыль, чтобы не использовать статический лист (для удолетворения валика)
Files.walkFileTree(Paths.get(args[0]), new MyFileVisitor(sol)); //проверяем каждый файл по нашему пути
if (!sol.fileList.isEmpty()) { //если нужные файлы нашлись, то записываем содержимое всех файлов в файл
sol.fileList.sort(Comparator.comparing(File::getName)); //сортируем файлы согласно условию
try (BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(file2))){
for (File fileFromList : sol.fileList) {
try (BufferedInputStream bis = new BufferedInputStream(new FileInputStream(fileFromList))) {
while (bis.available() > 0) {
bos.write(bis.read());
}
bos.write("\n".getBytes());
}
}
}
}
}
}
}
static class MyFileVisitor extends SimpleFileVisitor<Path> {
Solution sol; //костыль чтобы не юзать статическую переменную
public MyFileVisitor(Solution sol) {
this.sol = sol;
}
@Override
public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throws IOException {
if (Files.isRegularFile(file)) { //проверяем файл ли это
File myFile = file.toAbsolutePath().toFile(); //преобразуем Path в File
if (myFile.length() <= 50) sol.fileList.add(myFile);
}
return FileVisitResult.CONTINUE;
}
}
}