Задачу решил верно. Валидатор ругается, что не закрыл потоки. Потоки закрыты.
Задачу проверил на итоговых файлах - делит все ок.
package com.javarush.task.task18.task1808;
/*
Разделение файла
*/
import java.io.*;
import java.util.ArrayList;
public class Solution {
public static void main(String[] args) throws IOException {
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in));
String filePathString1 = bufferedReader.readLine();
String filePathString2 = bufferedReader.readLine();
String filePathString3 = bufferedReader.readLine();
InputStream fileInputStream = new FileInputStream(filePathString1);
ArrayList<Integer> mainFileByteList = new ArrayList<>();
while (fileInputStream.available() > 0) {
mainFileByteList.add(fileInputStream.read());
}
if (mainFileByteList.size() % 2 == 0) {
FileOutputStream outputStream = new FileOutputStream(filePathString2);
for (int i = 0; i < mainFileByteList.size() / 2; i++) {
outputStream.write(mainFileByteList.get(i));
}
outputStream = new FileOutputStream(filePathString3);
for (int i = mainFileByteList.size() / 2; i < mainFileByteList.size(); i++) {
outputStream.write(mainFileByteList.get(i));
}
outputStream.close();
fileInputStream.close();
} else {
//System.out.println("Size: " + mainFileByteList.size());
FileOutputStream outputStream = new FileOutputStream(filePathString2);
for (int i = 0; i < (mainFileByteList.size() - (mainFileByteList.size() * 0.5)); i++) {
outputStream.write(mainFileByteList.get(i));
}
System.out.println();
outputStream = new FileOutputStream(filePathString3);
for (int i = (int) (mainFileByteList.size() - (mainFileByteList.size() * 0.5)) + 1; i < mainFileByteList.size(); i++) {
outputStream.write(mainFileByteList.get(i));
}
outputStream.close();
fileInputStream.close();
}
}
}