Простой Reader и Writer на Java, как лучше реализовать

128
06 июня 2019, 16:00

Всем добрый день, собственно есть задача. Прочитать файл с определенными словами.

table
flat
building

Далее эти слова должны обрабатываться в другом классе. И после этого записываться в другой файл.

При этом если нет входного файла, то в выходной файл запись уведомление об ошибке.

Как вообще это красиво и правильно организовать. Делал изначально в одном методе и чтение и запись, но как отдельно обработать ошибку по одному и второму файлу.

Получается в методе read я читаю файл построчно и там же вызываю метод write?

Answer 1

Это почти асинхронная обработка данных. Один класс (назовем его драйвер) получает данные из внешнего источника, передает их второму (назовем его обработчик), который эти данные обрабатывает, затем драйвер получает ответ от обработчика с новыми данными и записывает их в файл.

Если делать просто, это будет два объекта в сильной зависимости друг от друга. Вы создаете оба этих объекта, передаете драйверу ссылку на обработчика, обработчику ссылку на драйвер и поехали:

  • Передаете в драйвер файлы, откуда читать и куда записывать.
  • Просите драйвер получить данные из файла драйвер.readData().
  • Когда данные получены, драйвер вызывает у обработчика метод обработки данных обработчик.handl(data), передавая ему полученные данные. Или у себя метод write(error), если с чтением пошло что-то не так.
  • Обработчик, получая данные исполняет handl(data), и когда все готово вызывает у драйвера метод записи, передавая ему новые данные данные драйвер.write(newData).
  • Драйвер записывает данные в файл.

Написав эти четыре метода вы получите весь функционал. Это не очень красивое и правильное, но самое простое решение.

В идеале объекты должны мало что знать друг о друге и выполнять только свою работу, возможно в разных потоках. Но это потребует немного другого более сложного подхода.

READ ALSO
TCP сокет на Android Studio

TCP сокет на Android Studio

Есть серверная часть написанная на C# и есть клиентская часть, написанная на Java под андроидПри попытке подключения телефона к серверу вылетает...

184
Удаление объекта из Realm

Удаление объекта из Realm

У меня есть некий сложный объект, состоящий из других объектовЯ хочу удалить этот сложный объект и все объекты из которых он состоит

161
Не скрывать клавиатуру на Android

Не скрывать клавиатуру на Android

Как сделать что бы при нажатии на Enter не пропадала программная клавиатура?

176
Анимация вокруг своей оси

Анимация вокруг своей оси

Кто имеет опыт создания анимаций по типу, как на главной странице сайта SimilarWeb?! Задача в создании анимации, которая вращается по своей оси!

156