7. Основы Kotlin. Файловые операции

За занавесом: запись в файл

Запись в файл использует те же три уровня: байты OutputStream, символы OutputStreamWriter и строки BufferedWriter. Для записи байт либо символов используются функции write, аргументом которых может являться целое число (в котором хранится байт или код символа) или массив (опять-таки байт или символов). Эти функции не имеют результата и бросают IOException, если файл недоступен для записи. BufferedWriter может использовать функцию write также для записи строк. Как и все три вида потоков чтения, потоки записи необходимо закрывать после использования с помощью close() или use { …​ }.

Сверх этого, для записи часто используется так называемый поток печати PrintStream. В Котлине его можно создать из файла, используя функцию file.printStream(). Поток печати расширяет обычный байтовый поток рядом дополнительных возможностей:

  1. printStream.println(…​) — вывод заданной строки или строкового представления с последующим переходом на новую строку.
  2. printStream.print(…​) — то же, но без перехода на новую строку.
  3. printStream.format(formatString, …​) — форматированный вывод (происходит по принципу, описанном в разделе 6).

Упражнения

Откройте файл srс/lesson7/task1/Files.kt в проекте KotlinAsFirst. Он содержит ряд задач, каждая из которых предполагает наличие входного и/или выходного файла. Решите хотя бы одну-две из имеющихся задач, используя описанные в этом разделе приёмы. Обратите внимание на задачи, помеченные как “Сложная” или “Очень сложная”, попробуйте решить одну из них.

Протестируйте свою реализацию, используя тесты из test/lesson7/task1/Tests.kt. Обратите внимание, что тесты используют готовые входные файлы, расположенные в директории input нашего проекта. Убедитесь, что тесты успешно проходят, обязательно создайте два-три дополнительных теста. Постарайтесь внутри этих тестов проверить какие-либо необычные ситуации, которые могут возникнуть в выбранной вами задаче.

Додати коментар