понедельник, 10 июля 2017 г.

День девятнадцатый. Ввод-вывод.

3 шага по работе с I/O потоками:
  1. открыть поток (файл, url и т.д.)
  2. считать либо записать данные в этом потоке
  3. закрыть поток
Буферизированные потоки
Класс FileInputStream заворачиваем в BufferedInputStream. Затем выносится некоторое количество байтов в память за один раз, а уже потом считывается из этой памяти (буфера).

Чтение потоков со знаками
FileReader - читать
FileWriter - писать
FileInputStream - InputStreamReader - BufferReader

Запись в поток со знаками
FileOutputStream - OutputStreamWriter - BufferedWriter

Файлы API
Класс Files - упрощает операции с файлами (создание, удаление, копирование и т.д.)
Класс Path - программно выдаёт путь к файлу в системе.

Сериализация
Перевод объекта в строку байтов, передача этой строки на другую JVM с последующей реконструкцией в исходный объект, называют сериализацией.
Чтобы сериализировать класс, нужно в него имплиментировать специальный интерфейс java.io.Serializable - это пример маркер-интерфейса (в нём нет методов, которые необходимо было бы имплиментировать).

Ключевое слово Transient
Этим словом помечаем поля, которые не хотим сериализовывать.

1 комментарий:

  1. Стоит упомянуть try-catch-with-resources! JVM автоматически закрывает всё, что имплементирует AutoClosable и Closable, когда выходит из блока try-catch.
    https://docs.oracle.com/javase/tutorial/essential/exceptions/tryResourceClose.html

    ОтветитьУдалить