Не могу понять, почему в данной ситуации, первый файл не читается в коллекцию, а второй читается. Экспериментальным путем выяснил, что если перенести строку
BufferedOutputStream destinationFileStream = new BufferedOutputStream(new FileOutputStream(file1));
после комментария //write file, то все работает, но не могу понять причину такого поведения.
public class Solution {
public static void main(String[] args) throws Exception {
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
String file1 = reader.readLine();
String file2 = reader.readLine();
reader.close();
BufferedOutputStream destinationFileStream = new BufferedOutputStream(new FileOutputStream(file1));
BufferedInputStream sourceFileStream = new BufferedInputStream(new FileInputStream(file2));
ArrayList<Integer> bytes = new ArrayList<>();
//read second file
while (sourceFileStream.available() > 0) {
bytes.add(Integer.valueOf(sourceFileStream.read()));
}
sourceFileStream.close();
//read first file
sourceFileStream = new BufferedInputStream(new FileInputStream(file1));
while (sourceFileStream.available() > 0) {
bytes.add(Integer.valueOf(sourceFileStream.read()));
}
sourceFileStream.close();
//write file
for (int i = 0; i < bytes.size(); i++) {
destinationFileStream.write(bytes.get(i));
}
destinationFileStream.close();
}
}