Запись в файл в Kotlin

1. Общий обзор

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

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

2. Расширения файлов Kotlin

Kotlin предоставляет различные способы записи в файл в виде методов расширения для java.io.File.

Мы будем использовать некоторые из них, чтобы продемонстрировать различные способы, которыми мы можем достичь этого с помощью Kotlin:

  • writeText - позволяет нам выполнять запись непосредственно из строки
  • writeBytes - позволяет нам выполнять запись непосредственно из ByteArray
  • printWriter - предоставляет нам печатника
  • bufferedWriter - позволяет нам писать с помощью BufferedWriter

Давайте обсудим их более подробно.

3. Прямое написание

Запись непосредственно в файл из заданного источника - это самая простая стратегия, которую мы можем ожидать, используя методы расширения Kotlin.

3.1. Ввод текста

Вероятно, самый простой метод расширения, writeText принимает содержимое в качестве строкового аргумента и записывает его непосредственно в указанный файл. Данное содержимое представляет собой текст, закодированный в UTF-8 (по умолчанию) или в любой другой указанной кодировке:

File(fileName).writeText(fileContent)

Этот метод внутренне делегирует данные для writeBytes, как описано ниже. Но сначала он преобразует заданное содержимое в массив байт, используя указанную кодировку.

3.2. Количество записываемых байт

Аналогично, мы можем использовать байты в качестве входных данных. Метод writeBytes принимает массив байтов в качестве аргумента и напрямую записывает его в указанный файл. Это полезно, когда мы имеем содержимое в виде массива байтов, а не обычного текста.

File(fileName).writeBytes(fileContentAsArray)

Если данный файл существует, он будет перезаписан.

4. Запись в файл с помощью средств записи

Kotlin также предлагает методы расширения, которые предоставляют нам экземпляр Java Writer.

4.1. Печатный редактор

Если мы хотим использовать Java PrintWriter, Kotlin предоставляет функцию PrintWriter именно для этой цели. С ее помощью мы можем печатать форматированные представления объектов в OutputStream:

File(fileName).printWriter()

Этот метод возвращает новый экземпляр PrintWriter. Далее мы можем воспользоваться преимуществами метода use для его обработки:

File(fileName).printWriter().use { out -> out.println(fileContent) }

С помощью use мы можем выполнить функцию на ресурсе, которая закрывается после завершения. Ресурс закрывается независимо от того, была ли функция выполнена успешно или вызвала исключение.

4.2. BufferedWriter

Аналогичным образом, Kotlin также предоставляет функцию BufferedWriter, которая предоставляет нам Java BufferedWriter.

С ее помощью мы можем записывать текст в поток символьного вывода более эффективным способом.

File(fileName).bufferedWriter()

Подобно PrintWriter, эта функция возвращает новый экземпляр BufferedWriter, который позже мы сможем использовать для записи содержимого файла.

File(fileName).bufferedWriter().use { out -> out.write(fileContent) }

5. Добавление текста в существующий файл

Мы уже видели, как записать содержимое в файл. Однако эти операции перезаписывают существующее содержимое файла. Иногда мы хотим добавить новое содержимое в существующий файл. Итак, далее давайте рассмотрим, как добавить текст в файл.

Подобно функциям write Text() и writeBytes(),
функции AppendText() и appendBytes() также являются расширениями файлов. Как следует из их названий, эти два расширения добавляют новое содержимое в файл вместо перезаписи исходного файла:

File(fileName).appendText(newContent)
File(fileName).appendBytes(newContentAsArray)

6. Заключение

В этой статье мы рассмотрели различные способы записи и добавления файла с использованием расширений файлов Kotlin.

Оригинал статьи: https://www.baeldung.com/kotlin/write-file