JavaRush
Акция
Университет
Java FullStack
Python FullStack
new
Web FullStack
new
Обучение
Курсы
Задачи
Опросы
Игры
Помощь
График пинков
Стажировка
Сообщество
Пользователи
Форум
Чат
Статьи
Истории успеха
Активности
Отзывы
Подписки
Светлая тема
Вопрос
  • Отзывы
  • О нас
  • CS50
Начать
Начать обучение
Начать обучение
  • Все вопросы
JavaRush/Помощь по Java задачам/2 и 3 пункт не проходит
Северин
41 уровень
  • 12.11.2019
  • 401просмотров
  • 7комментариев

2 и 3 пункт не проходит

Вопрос по задаче Разделение файла
Java Core,  8 уровень,  5 лекция
Решен

Считать с консоли три имени файла: файл1, файл2, файл3.
Разделить файл1 по следующему критерию:
Первую половину байт записать в файл2, вторую половину байт записать в файл3.
Если в файл1 количество байт нечетное, то файл2 должен содержать большую часть.
Закрыть потоки.

Требования:
  • Программа должна три раза считать имена файлов с консоли.
  • Для чтения из файла используй поток FileInputStream, для записи в файлы - FileOutputStream
  • Первую половину байт из первого файла нужно записать во второй файл.
  • Вторую половину байт из первого файла нужно записать в третий файл.
  • Потоки FileInputStream и FileOutputStream должны быть закрыты.
package com.javarush.task.task18.task1808; /* Разделение файла */ import java.io.*; public class Solution { public static void main(String[] args) throws IOException { BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); String filenamemain = reader.readLine(); String filenamefirsthalf = reader.readLine(); String filenamesecondhalf = reader.readLine(); FileInputStream inputStream = new FileInputStream(filenamemain); FileOutputStream outputStream1 = new FileOutputStream(filenamefirsthalf); FileOutputStream outputStream2 = new FileOutputStream(filenamesecondhalf); byte[]buffer = new byte[inputStream.available()]; int count = 0; while(inputStream.available()>0){ count = inputStream.read(buffer); } inputStream.close(); if (!(count==0)){ outputStream1.write(buffer, 0, ((count/2) + 1)); outputStream2.write(buffer, (count/2)+2, count); }else { outputStream1.write(buffer, 0, count/2); outputStream2.write(buffer, count/2+1, count); } reader.close(); outputStream1.close(); outputStream2.close(); } }
0
Комментарии (7)
  • популярные
  • новые
  • старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
IceBerg
Уровень 41
Master
12 ноября 2019, 14:40
А работает как, тестировал? Что в arr содержится?
0
Северин
Уровень 41
13 ноября 2019, 11:06
inputStream.read(buffer);
насколько я понял материал, то в массив arr, c длиной inputStream.available() у меня идёт запись всего блока байт с inputStream.
0
IceBerg
Уровень 41
Master
13 ноября 2019, 11:10
Не вижу подобной строки в твоём коде.
0
Северин
Уровень 41
13 ноября 2019, 11:26
Сори, переделываю 3 раз, уже исправил код. что по этому скажете?
0
IceBerg
Уровень 41
Master
13 ноября 2019, 11:32
?
if (!(count==0))
Т.е. если count равно нулю, то выполняем блок записи из else?
0
Северин
Уровень 41
13 ноября 2019, 11:42
отредактировал
0
Северин
Уровень 41
13 ноября 2019, 16:59решение
домучал. ошибка была в понимании метода write. Задача проста и логична
+2
Обучение
  • Курсы программирования
  • Регистрация
  • Курс Java
  • Помощь по задачам
  • Цены
Сообщество
  • Пользователи
  • Статьи
  • Форум
  • Чат
  • Истории успеха
  • Активности
Компания
  • О нас
  • Контакты
  • Отзывы
  • FAQ
  • Поддержка
JavaRushJavaRush — это интерактивный онлайн-курс по изучению Java-программирования c нуля. Он содержит 1200 практических задач с проверкой решения в один клик, необходимый минимум теории по основам Java и мотивирующие фишки, которые помогут пройти курс до конца: игры, опросы, интересные проекты и статьи об эффективном обучении и карьере Java‑девелопера.
Подписывайтесь
Язык интерфейса
Русский
English Українська
"Программистами не рождаются" © 2026 JavaRush
MastercardVisa
"Программистами не рождаются" © 2026 JavaRush