Maybe an off by one error?
package com.codegym.task.task18.task1808;
/*
Splitting a file
*/
import java.io.*;
import java.util.ArrayList;
public class Solution {
public static void main(String[] args) throws Exception {
// create buffered Reader
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
// read 3 fileNames from console
String fileName1 = reader.readLine();
String fileName2 = reader.readLine();
String fileName3 = reader.readLine();
// create ArrayList<Byte>
ArrayList<Integer> byteArray = new ArrayList<>();
// create fis1
FileInputStream fis1 = new FileInputStream(fileName1);
// create fos2
FileOutputStream fos2 = new FileOutputStream(fileName2);
// create fos3
FileOutputStream fos3 = new FileOutputStream(fileName3);
// write fis1 to byteArray
while (fis1.available() > 0) {
Integer b = fis1.read();
byteArray.add(b);
}
if (byteArray.size() % 2 == 0)
{
// write first half of fis1 to fis2
for (int i = 0; i < byteArray.size() / 2; i++) {
fos2.write(byteArray.get(i));
}
// write second half of fis1 to fis3
for (int i = (byteArray.size() / 2) + 1; i < byteArray.size(); i++) {
fos3.write(byteArray.get(i));
}
}
else
{
// write first half of fis1 to fis2
for (int i = 0; i < (byteArray.size() / 2) + 1; i++) {
fos2.write(byteArray.get(i));
}
// write second half of fis1 to fis3
for (int i = byteArray.size() / 2 + 2; i < byteArray.size(); i++) {
fos3.write(byteArray.get(i));
}
}
// close br, fis, and fos
reader.close();
fis1.close();
fos2.close();
fos3.close();
}
}