Видимо я как то не верно понимаю эту тему. Подскажите, пожалуйста, где ошибка, чего я не замечаю?
package com.javarush.task.task18.task1808;
/*
Разделение файла
Считать с консоли три имени файла: файл1, файл2, файл3.
Разделить файл1 по следующему критерию:
Первую половину байт записать в файл2, вторую половину байт записать в файл3.
Если в файл1 количество байт нечетное, то файл2 должен содержать большую часть.
Закрыть потоки.
Требования:
1. Программа должна три раза считать имена файлов с консоли.
2. Для чтения из файла используй поток FileInputStream, для записи в файлы - FileOutputStream
3. Первую половину байт из первого файла нужно записать во второй файл.
4. Вторую половину байт из первого файла нужно записать в третий файл.
5. Потоки FileInputStream и FileOutputStream должны быть закрыты.
*/
import java.io.*;
public class Solution {
public static void main(String[] args) throws IOException {
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in));
String file1 = bufferedReader.readLine();
String file2 = bufferedReader.readLine();
String file3 = bufferedReader.readLine();
FileInputStream fileInputStream = new FileInputStream(file1);
OutputStream fileOutputStream2 = new FileOutputStream(file2);
OutputStream fileOutputStream3 = new FileOutputStream(file3);
int file = fileInputStream.available();
int half = file / 2;
if (file % 2 == 0) {
while (file > 0) {
byte[] buffer = new byte[half];
fileOutputStream2.write(buffer, 0, half);
fileOutputStream3.write(buffer, half, half);
}
}
else {
while (file > 0) {
byte[] buffer = new byte[half];
int half1 = file - half;
byte[] buffer2 = new byte[half1];
fileOutputStream2.write(buffer, 0, half);
fileOutputStream3.write(buffer2, half, half1);
}
}
bufferedReader.close();
fileInputStream.close();
fileOutputStream2.close();
fileOutputStream3.close();
}
}