Запись в файл в Котлине

Запись в файл в Котлине

1. обзор

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

2. KotlinFile Расширения

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

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

  • writeText – позволяет нам писать прямо изString

  • writeBytes – позволяет нам писать прямо изByteArray

  • printWriter – предоставляет намPrintWriter

  • bufferedWriter – позволяет нам писать, используяBufferedWriter

Обсудим их подробнее.

3. Писать прямо

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

3.1. writeTextс

Вероятно, самый простой метод расширения,writeText takes the content as a String argument and writes it directly into the specified file.. Данный контент представляет собой текст, закодированный вUTF-8 (по умолчанию) или в любом другом указанномcharset:

File(fileName).writeText(fileContent)

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

3.2. writeBytesс

Аналогично, мы можем использовать байты в качестве входных данных. The method writeBytes takes a ByteArray as an argument and directly writes it into the specified file. Это полезно, когда у нас есть содержимое в виде массива байтов, а не простого текста.

File(fileName).writeBytes(fileContentAsArray)

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

4. Запись вFile с помощью писателей

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

4.1. printWriterс

If we’d like to use a Java PrintWriter, Kotlin provides a printWriter function exactly for this purpose. С его помощью мы можем распечатать форматированные представления объектов вOutputStream:

File(fileName).printWriter()

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

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

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

4.2. bufferedWriterс

Точно так же Kotlin также предоставляет функциюbufferedWriter, которая предоставляет нам JavaBufferedWriter.

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

File(fileName).bufferedWriter()

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

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

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

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

Наконец, исходный код этой статьи и соответствующие тестовые примеры доступны в следующихGitHub repository.