Решил заменив запись данных через:
byte[] bytes = Files.readAllBytes(f.toPath());
fileOutputStream.write(bytes);
fileOutputStream.write("\n".getBytes());
Подскажите, а что лишнее записывается, если записываем как в этом коде:
while (fileInputStream.available()>0){
byte[] bytes = new byte[1024];
int n = fileInputStream.read(bytes);
fileOutputStream.write(bytes);
}
fileOutputStream.write("\n".getBytes());
package com.javarush.task.task31.task3101;
import java.io.*;
import java.nio.file.*;
import java.nio.file.attribute.BasicFileAttributes;
import java.util.EnumSet;
import java.util.Map;
import java.util.TreeMap;
/*
Проход по дереву файлов
*/
public class Solution {
public static void main(String[] args) {
File path = new File(args[0]);
File file = new File(args[1]);
File resultFile = new File(file.getParent() + "/allFilesContent.txt");
if (FileUtils.isExist(resultFile)) {
FileUtils.deleteFile(resultFile);
}
FileUtils.renameFile(file, resultFile);
try (FileOutputStream fileOutputStream = new FileOutputStream(resultFile)){
copyFiles(path, fileOutputStream);
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
private static void copyFiles(File directory, FileOutputStream fileOutputStream){
File[] files = directory.listFiles();
for (File f:files) {
if (Files.isRegularFile(f.toPath())){
if (f.length()<=50){
try(FileInputStream fileInputStream = new FileInputStream(f)){
while (fileInputStream.available()>0){
byte[] bytes = new byte[1024];
int n = fileInputStream.read(bytes);
fileOutputStream.write(bytes);
}
fileOutputStream.write("\n".getBytes());
}catch (Exception e){
System.err.println(e.getMessage());
}
}
}else if (Files.isDirectory(f.toPath())) {
copyFiles(f,fileOutputStream);
}
}
}
}