вы можете закидать меня Г@ВНИЦОВ, я понимаю что код жесткий, но в моём понимании он должен работать, но он не работает! в самом начале понятно, что создаю потоки для работы с файлами, далее соответственно идет блок while для чтения данных из первого файла, который будет работать до той поры пока i !=-1 после чего идет запись всех байтов из первого файла в ArrayList, дальше в цикле while идет условие if которое отработает, если i==-1,далее если условие выполняется в нём мы затираем данные в первом файле, после идет цикл while на чтение данных из второго файла и записи этих данных в первый файл(получается запись в пустой документ в начало файла как требует условие), после идет цикл for для записи данных из ArrayList в первый файл (получается начальные записи из первого документа выводим в конец первого документ опять же по условию). Ну и потоки все закрыл соответственно. Мне потоки вообще даются сложно, поэтому не ругайтесь!
package com.javarush.task.task18.task1819;
/*
Объединение файлов
*/
import java.io.*;
import java.util.ArrayList;
public class Solution {
public static void main(String[] args) throws IOException {
ArrayList<Byte> listbuffer = new ArrayList<>();
BufferedReader readerConsole = new BufferedReader(new InputStreamReader(System.in));
String s = readerConsole.readLine();
String s1 = readerConsole.readLine();
FileInputStream firstFile = new FileInputStream(s);
FileInputStream secondFile = new FileInputStream(s1);
BufferedInputStream bufferedInputStream = new BufferedInputStream(firstFile);
BufferedInputStream bufferedInputStream1 = new BufferedInputStream(secondFile);
FileOutputStream fileOutputStream = new FileOutputStream(s);
BufferedOutputStream bufferedOutputStream;
int i;
while ((i = bufferedInputStream.read()) != -1) {
listbuffer.add((byte) i);
bufferedOutputStream = new BufferedOutputStream(fileOutputStream);
if (i == -1) {
bufferedOutputStream.write(null);
while((i=bufferedInputStream1.read())!=-1){
bufferedOutputStream.write(i);
}
}
for(Byte e:listbuffer){bufferedOutputStream.write(e);}
bufferedOutputStream.close();
}
firstFile.close();
secondFile.close();
bufferedInputStream.close();
bufferedInputStream1.close();
}
}