package com.javarush.task.task18.task1808;
/*
Разделение файла
*/
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStreamReader;
public class Solution {
public static void main(String[] args) throws Exception {
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
FileInputStream f = new FileInputStream(bf.readLine()); //создаём поток чтения
FileOutputStream f1 = new FileOutputStream(bf.readLine()); //создаём первый поток записи
FileOutputStream f2 = new FileOutputStream(bf.readLine()); //создаём второй поток записи
bf.close();
int k = (int) f.getChannel().size(); //узнаём количество байтов
byte[] buffer = new byte[f.available() / 2]; //задаём буфер в 2 раза меньший количеству байтов
if (k % 2 == 0) { // если чётное количество
int count = f.read(buffer); //заполняем буфер для первого файла записи
f1.write(buffer, 0, count); //записываем
count = f.read(buffer); //заполняем буфер для второго файла записи
f2.write(buffer, 0, count); //записываем
} else { // если нечётное количество
int count = f.read(buffer); //заполняем буфер для первого файла записи
f1.write(buffer, 0, count); //записываем
f1.write(f.read()); //дозаписываем один "серединный" байт
count = f.read(buffer); //заполняем буфер для второго файла записи
f2.write(buffer, 0, count); //записываем
}
f.close(); //закрываем поток чтения
f1.close(); //закрываем первый поток записи
f2.close(); //закрываем второй поток записи
}
}
Artur Ayriyan
24 уровень
Скорее всего все уже знают причину кроме меня. Валидатор не принимает. скорее всего что-то с исключениями. кто может объяснить дураку?
Решен
Комментарии (3)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Justinian Judge в Mega City One Master
4 июня 2020, 08:34решение
Попробуй убрать строку:
у тебя же есть метод available(), с которым ты работаешь уже в след строке, используй его +2
Алексей МихайловExpert
4 июня 2020, 04:09
какой пункт не проходит?
0
Artur Ayriyan
4 июня 2020, 15:15
2 и 5.
Убрал строку int k = (int) f.getChannel().size();
помогло, спасибо!
но почему она мешала ?
0