1. Почему если объявить поток записи сразу после потоков считывания, то работа будет некорректной?
2. Почему в похожей задаче com.javarush.task.task18.task1818 (код прикреплю в комментарий) у нас после записи первого файла, второй записывается корректно, без затирания, а в текущей задачи при таком же решении всё ломается?
3. Как работает строка 18 и 20? Как мы в int без цикла записываем по факту весь массив?
4. Как устроена строка 24 и 25. Почему нельзя обойтись такой же записью, как из задачи во 2 пункте (см. комментарий)
Заранее всех благодарю за уделенное время!
package com.javarush.task.task18.task1819;
/*
Объединение файлов
*/
import java.io.*;
public class Solution {
public static void main(String[] args) throws IOException {
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
String file1Name = reader.readLine();
String file2Name = reader.readLine();
FileInputStream file1InputStream = new FileInputStream(file1Name);
FileInputStream file2InputStream = new FileInputStream(file2Name);
byte[] file1bytes = new byte[file1InputStream.available()];
int one = file1InputStream.read(file1bytes); // ?
byte[] file2bytes = new byte[file2InputStream.available()];
int two = file2InputStream.read(file2bytes);
FileOutputStream file1OutputStream = new FileOutputStream(file1Name); //почему нельзя объявить в начале?
file1OutputStream.write(file1bytes, 0, two); //почему без цикла??
file1OutputStream.write(file2bytes, 0, one);
reader.close();
file1InputStream.close();
file2InputStream.close();
file1OutputStream.close();
}
}