Решение отличается, но оно работает, почему не принимает?
package com.javarush.task.task18.task1808;
import java.io.*;
import java.util.ArrayList;
import java.util.List;
/*
Считать с консоли три имени файла: файл1, файл2, файл3.
Разделить файл1 по следующему критерию:
Первую половину байт записать в файл2, вторую половину байт записать в файл3.
Если в файл1 количество байт нечетное, то файл2 должен содержать большую часть.
Закрыть потоки.
Требования:
1. Программа должна три раза считать имена файлов с консоли.
2. Для чтения из файла используй поток FileInputStream, для записи в файлы - FileOutputStream
3. Первую половину байт из первого файла нужно записать во второй файл.
4. Вторую половину байт из первого файла нужно записать в третий файл.
5. Потоки FileInputStream и FileOutputStream должны быть закрыты.
*/
public class Solution {
public static void main(String[] args) {
String file1 = null;
String file2 = null;
String file3 = null;
int size = 0;
List<Integer> list = new ArrayList<>();
try (BufferedReader reader = new BufferedReader(new InputStreamReader(System.in))) {
file1 = reader.readLine();
file2 = reader.readLine();
file3 = reader.readLine();
} catch (Exception e) {
e.printStackTrace();
}
try (FileInputStream fileInputStream = new FileInputStream(file1); FileOutputStream fileOutputStream1 = new FileOutputStream(file2); FileOutputStream fileOutputStream2 = new FileOutputStream(file3)) {
while (fileInputStream.available() > 0) {
list.add(fileInputStream.read());
}
if (list.size() % 2 == 0) {
size = list.size() / 2;
for (int i = 0; i < size; i++) {
fileOutputStream1.write(list.get(i));
}
for (int size1 = size; size1 < list.size(); size1++) {
fileOutputStream2.write(list.get(size1));
}
} else {
size = list.size() / 2;
for (int i = 0; i < size; i++) {
fileOutputStream2.write(list.get(i));
}
for (int size1 = size; size1 < list.size(); size1++) {
fileOutputStream1.write(list.get(size1));
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
}