Приветствую.
Откомментировал, как смог. Запускал - вроде работает, но если середина файла попадает в разрыв символа (размер больше байта), естественно, символ повреждается.
Может, не вижу чего?
package com.javarush.task.task18.task1808;
/*
Разделение файла
*/
import java.io.*;
import java.util.Arrays;
public class Solution {
public static void main(String[] args) throws IOException {
BufferedReader rd = new BufferedReader(new InputStreamReader(System.in));
FileInputStream fis = new FileInputStream(rd.readLine());//файл1
FileOutputStream fos1 = new FileOutputStream(rd.readLine());//файл2
FileOutputStream fos2 = new FileOutputStream(rd.readLine());//файл3
rd.close();//закрыть ридер
byte array[] = null;//буфер
int trueLength = 0;//вряд ли поможет, но если вдруг прочитано меньше, чем available
if(fis.available()>0)
{
array = new byte[fis.available()];
trueLength = fis.read(array);//читаем весь файл в массив
}
fis.close();
if(array.length>trueLength) array = Arrays.copyOfRange(array, 0, trueLength);//см.строку 18
int splitter = (array.length%2==0) ? array.length/2 : array.length/2-1;//делим массив согласно условию
fos1.write(Arrays.copyOfRange(array, 0, splitter));
fos1.close();
fos2.write(Arrays.copyOfRange(array, splitter, array.length));
fos2.close();
}
}
Видимо, массив здесь так и не прокатит.