Пробовал решить эту задачу создавая массив byte с помощью метода readAllbyte.
Задача не компилировалась на сервере. Почему нужно просто создавать массив, потом в него писать байты, а не сразу создать такой массив?
Метод readAllBytes возвращает другие байты ? Объясните пожалуйста, не понимаю
public static void main(String[] args) {
try(BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
FileInputStream fileReader = new FileInputStream(reader.readLine());
FileOutputStream fileWriter1 = new FileOutputStream(reader.readLine());
FileOutputStream fileWriter2 = new FileOutputStream(reader.readLine())) {
byte [] input = new byte[fileReader.available()];
int num = input.length % 2 == 0 ? input.length / 2 : input.length / 2 + 1;
if (fileReader.available() > 0) {
fileReader.read(input);
fileWriter1.write(input, 0, num);
fileWriter2.write(input, num, input.length / 2);
}
} catch (Exception e) {
System.out.println("Something went wrong");
}
}
}
TopDog888
32 уровень
Почему нельзя создать массив байт методом readAllBytes ?
Решен
Комментарии (3)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Денис Enterprise Java Developer
21 мая, 09:00
Потому что в JDK 8 такого метода просто нет, а на сервере стоит именно эта версия.
0
TopDog888
21 мая, 09:02
А принцип решения через метод readAllBytes правильный ?
0
Денис Enterprise Java Developer
21 мая, 09:07
Если ты про свой код - я его не читал. Но технических проблем быть не должно, метод просто вычитывает все байты за раз, другими они стать не могут :) Потому, если логика работы с ними верная - все будет верно.
Тут стоит заметить другой момент, само по себе метод readAllBytes читает все доступные байты из потока в память, если их достаточно много память не сложно выжрать в ноль и упасть. Потому я бы все равно избегал этого метода в реальной практике.
0