Программа работает. Из файла в файлы разделяет и записывает. Вроде бы, всё выполняется, но в валидации написано, что всё не выполнено. Непонятно... Помогите, пожалуйста.
package com.javarush.task.task18.task1808;
/*
Разделение файла
Считать с консоли три имени файла: файл1, файл2, файл3.
Разделить файл1 по следующему критерию:
Первую половину байт записать в файл2, вторую половину байт записать в файл3.
Если в файл1 количество байт нечетное, то файл2 должен содержать большую часть.
Закрыть потоки.
Requirements:
1. Программа должна три раза считать имена файлов с консоли.
2. Для чтения из файла используй поток FileInputStream, для записи в файлы - FileOutputStream
3. Первую половину байт из первого файла нужно записать во второй файл.
4. Вторую половину байт из первого файла нужно записать в третий файл.
5. Потоки FileInputStream и FileOutputStream должны быть закрыты.
*/
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Scanner;
public class Solution {
public static void main(String[] args) throws IOException {
ArrayList<Integer> list0 = new ArrayList<Integer>(); // лист с всеми байтами из файла
Scanner scanner = new Scanner(System.in);
String fileName1 = scanner.nextLine();
String fileName2 = scanner.nextLine();
String fileName3 = scanner.nextLine();
FileInputStream inputStream1 = new FileInputStream(fileName1);
while (inputStream1.available() > 0) { //пока остались непрочитанные байты
int data = inputStream1.read(); //прочитать очередной байт
list0.add(data);// добавляем все байты в лист
}
inputStream1.close(); // закрыть поток
int size05 = list0.size() / 2; // половина байт, окруление к меньшему
int byte1 = 0;
FileOutputStream outputStream2 = new FileOutputStream(fileName2);
for (int i = 0; i <= size05; i++ ) {
byte1 = list0.get(i);
outputStream2.write(byte1); //записать байт
}
outputStream2.close();
FileOutputStream outputStream3 = new FileOutputStream(fileName3);
for (int i = size05+1; i < list0.size(); i++ ) {
byte1 = list0.get(i);
outputStream3.write(byte1); //записать байт
}
outputStream3.close();
}}