Задачу сдал читая по одному байту, не сразу допер как распределить буфер чередуя файлы. Код сданной задачи не указал, т.к. вопрос о другом. Почему почти: - Цель сделать буфер размером не в весь файл, а на любое кол-во байт. - В этом варианте не проверяю четность байт для разделения по файлам, вместо этого добавлена переменная, указывающая нужное кол-во байт для файла №2, остальное пишется в файл № 3. Хотелось бы увидеть ваши решения такого варианта этой задачи, можно в личку.
import java.io.*;

public class Solution {
    public static void main(String[] args) throws IOException {
        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
        try (FileInputStream file1 = new FileInputStream(reader.readLine());
             FileOutputStream file2 = new FileOutputStream(reader.readLine());
             FileOutputStream file3 = new FileOutputStream(reader.readLine())) {

            byte[] buffer = new byte[100];  // указываем размер буфера
            int needToWrite = 10;  // указываем нужное кол-во байт для файла № 2
            int data;
            int bytesCount = 0;
            boolean canWriteFile1 = true;
            boolean canWriteFile2 = false;
            boolean offset = false;
            int offsetNumber;

            while (file1.available() > 0) {
                data = file1.read(buffer);

                // Пишу в файл № 2, пока не достигнуто кол-во байт в needToWrite
                if (canWriteFile1) {
                    if (bytesCount + data <= needToWrite) {
                        file2.write(buffer);
                        bytesCount += data;
                    } else {
                        // Если кол-во байт в буфере больше, чем нужно - отсекаю
                        file2.write(buffer, 0, needToWrite - bytesCount);
                        bytesCount += (needToWrite - bytesCount);
                        canWriteFile1 = false;
                        canWriteFile2 = true;
                        offset = true;
                    }
                }
                if (canWriteFile2) {
                    if (offset) {  // Пишем в файл № 3 только остаток буфера после отсечения (если оно было)
                        if (bytesCount >= needToWrite) {
                            offsetNumber = bytesCount % buffer.length;
                            file3.write(buffer, offsetNumber, data - offsetNumber);
                            offset = false;
                        }
                    } else {
                        file3.write(buffer, 0, data);
                    }
                }
            }
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }
    }
}