Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

06 Ввод-вывод

494 views

Published on

Published in: Education, Technology
  • Login to see the comments

06 Ввод-вывод

  1. 1. Ввод/Вывод и Сериализация
  2. 2. Потоки – основная абстракция <ul><li>Использование потоков позволяет абстрагироваться от конкретного механизма передачи данных </li></ul><ul><li>Основополагающие классы – InputStream и OutputStream </li></ul><ul><li>Расширение стандартных классов позволяет работать с потоками различной природы: файлами, данными из сокетов, и так далее </li></ul>
  3. 3. Работа с консолью <ul><li>Потоки ошибок, ввода и вывода – объекты классов InputStream и OutputStream </li></ul><ul><li>Потоки можно обернуть в обёртку нужного типа и работать с ней так же, как и с другими потоками </li></ul>
  4. 4. Файлы <ul><li>Основная абстракция над объектами файловой системы – File </li></ul><ul><li>Объекты имеют методы для получения информации о файловой системе, файлах, директориях, свободном пространстве, и так далее </li></ul>
  5. 5. Философия ввода-вывода <ul><li>В Java очень широко используются обёртки. </li></ul><ul><li>Если информация поступает в неудобном для вас виде (например, в виде ByteInputStream ), оберните исходный поток в поток, из которого вам удобно читать (например, в BufferedInputStream ) </li></ul>
  6. 6. Полезные классы java.io <ul><li>StringOutputStream – сохраняет данные, поступающие в поток, в строке </li></ul><ul><li>PrintStream – никогда не бросает исключений при вводе/выводе </li></ul><ul><li>Piped{Input|Output}Stream – вместе образуют pipe </li></ul><ul><li>ByteArray{Input|Output}Stream – в качестве источника/стока используется массив байт </li></ul>
  7. 7. Сериализация <ul><li>Для сериализации объектов стандартными средствами класс должен реализовывать инетфейс java.io.Serializable </li></ul><ul><li>Да, у интерфейса нет никаких методов и полей. Интерфейс служит только для указания на возможность сериализации </li></ul><ul><li>Объекты сериализуются в ObjectOutputStream , восстанавливаются из ObjectInputStream </li></ul><ul><li>Поля, которые не нужно сохранять, помечаются ключевым словом transient </li></ul>
  8. 8. Сериализация в XML <ul><li>Сериализация в XML позволит совместить преимущества машинной обработки данных и простого текстового представления данных </li></ul><ul><li>Примеры фреймворков – Simple </li></ul>
  9. 9. Сериализация в другие форматы <ul><li>Среди недостатков формата XML специалисты отмечают большую избыточность. Google использует собственный формат Protocol Buffers, предоставляет собственные (open-source) библиотеки для работы с форматом. </li></ul><ul><li>message Person { </li></ul><ul><li>required int32 id = 1; </li></ul><ul><li>required string name = 2; </li></ul><ul><li>optional string email = 3; </li></ul><ul><li>} </li></ul>

×