Не могу понять, почему в данной ситуации, первый файл не читается в коллекцию, а второй читается. Экспериментальным путем выяснил, что если перенести строку
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();
    }
}