Начал решать задачу, показалась легкой. Быстро накидал, но в итоге IndexOutOfBoundsException. Почему? Длинна массива ведь не меняется. На каких строчках вылетает пометил.
public class Solution {
public static void main(String[] args) {
try (BufferedInputStream file1 = new BufferedInputStream(new FileInputStream(new BufferedReader(new InputStreamReader(System.in)).readLine()));
BufferedOutputStream file2 = new BufferedOutputStream(new FileOutputStream(new BufferedReader(new InputStreamReader(System.in)).readLine()));
BufferedOutputStream file3 = new BufferedOutputStream(new FileOutputStream(new BufferedReader(new InputStreamReader(System.in)).readLine()))) {
byte[] file1Bytes = new byte[file1.available()];
while (file1.available() > 0) {
file1.read(file1Bytes);
}
if (file1Bytes.length % 2 == 0) {
file2.write(file1Bytes, 0, (file1Bytes.length / 2) - 1);
file3.write(file1Bytes, file1Bytes.length / 2, file1Bytes.length - 1); // тут
} else {
file2.write(file1Bytes, 0, file1Bytes.length / 2);
file3.write(file1Bytes, (file1Bytes.length / 2) + 1, file1Bytes.length - 1); // и тут
}
} catch (IOException e) {
e.printStackTrace();
}
}