Кто-нибудь задавался вопросом: а если файл1 своим размером превышает размер оперативки???, или другими словами, если нет возможности создать массив буфера таким размером, чтобы поместить в этот буфер весь файл1 ?? у меня получилось решить это следующим образом.
import java.io.*;

    public class Solution {
        public static void main(String[] args){
            BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
            try {
                FileInputStream  fis = new FileInputStream(br.readLine());
                FileOutputStream fos1 = new FileOutputStream(br.readLine());
                FileOutputStream fos2 = new FileOutputStream(br.readLine());
                br.close();
                int bufferSize = 2;  //  здесь может быть задан размер буфера...например 8000 байт
                byte[] buffer = new byte[bufferSize];
                int x = fis.available();
                int y = 0;  // используется для определения в какой файл записывать данные...
                int half = x/2+x%2;   //   определяем середину-половинку файла1
                int z = half;   //  используем для определения сколько считывать в буфер, так чтобы не проскочить середину half
                int count;  //  для определения сколько байт считанно
                while(fis.available() > 0) {
                    x = z < bufferSize? z:bufferSize;   // определяем сколько байт считываем в буфер,так чтобы считываемый блок помещался в этот самый буфер
                    z = z < bufferSize? half:z-bufferSize;
                    count = fis.read(buffer,0,x);
                    if(y < half) fos1.write(buffer,0,count);
                    else fos2.write(buffer,0,count);
                    y += count;
                }
                fis.close();
                fos1.close();
                fos2.close();
            }
            catch (IOException e) {
                System.out.println("Error");
            }
        }
}