По коду, при нечетном количестве в первом файле - большую часть писать в файл2. Так я это и делаю
package com.javarush.task.task18.task1808;
import java.io.*;
import java.util.ArrayList;
import java.util.List;
/*
Разделение файла
*/
public class Solution {
public static void main(String[] args) throws IOException {
List<Integer> dataOfFirstFile = new ArrayList<>();
BufferedReader reader1 = new BufferedReader(new InputStreamReader(System.in));
BufferedReader reader2 = new BufferedReader(new InputStreamReader(System.in));
BufferedReader reader3 = new BufferedReader(new InputStreamReader(System.in));
String filename1 = reader1.readLine();
String filename2 = reader2.readLine();
String filename3 = reader3.readLine();
try (FileInputStream fileInputStream = new FileInputStream(filename1);
FileOutputStream output2 = new FileOutputStream(filename2);
FileOutputStream output3 = new FileOutputStream(filename3)) {
if (fileInputStream.available() % 2 == 0) {
while (fileInputStream.available() > 0) {
byte[] buffer = new byte[fileInputStream.available()];
output2.write(buffer, 0, fileInputStream.available() / 2);
output3.write(buffer, fileInputStream.available() / 2, fileInputStream.available());
}
} else if (fileInputStream.available() % 2 != 0) {
while (fileInputStream.available() > 0) {
byte[] buffer = new byte[fileInputStream.available()];
output2.write(buffer, 0, (fileInputStream.available() / 2) + 2);
output3.write(buffer, (fileInputStream.available() / 2 + 1), fileInputStream.available() - 2);
}
}
}
}
}