Как записать и прочитать файл в Kotlin

Привет! Сегодня я расскажу как просто записать файл в Kotlin и прочитать его. Мы воспользуемся стандартными средствами java в виде Java.NIO.Files и BufferedReader.

Как прочитать файл в Kotlin?

Сначала начнем с простого чтения текстового файла в Kotlin и напишем простую функцию. Я пользуюсь IDE IntelliJ IDEA от JetBrains, вы можете пользоваться любой другой IDE для Kotlin.

fun getContent(source: String): String {
    var result = ""
    try {
        val buffReader: BufferedReader = Files.newBufferedReader(Paths.get(source))
        result = buffReader.use { it.readText() }
    } catch (error: IOException) {
        error.printStackTrace()
    }
    return result
}

Теперь давайте построчно разберем что у нас делает функция. На вход функция принимает путь к файлу в виде строки source: String, затем мы объявляем строковую переменную var result = «» куда и запишем в последствии наш результат.

IntelliJ IDEA

Далее следует стандартный блок try catch который в случае удачи вернет нам наш текст из файла, а в случае неудачи выдаст ошибку чтения файла в Kotlin — ex.printStackTrace(). Для чтения файла в Kotlin мы воспользуемся стандартным Bufferedreader, при создании которого передадим путь к файлу с помощью метода Paths.get(), который на вход принимает обычный путь к файлу в виде строки.

Получив данные, мы с помощью метода readText() у BufferedReader получаем текст из файла в Kotlin и возвращаем текст return result. Почему следует использовать BufferedReader для чтения файла? Просто так быстрее.

Как записать файл в Kotlin?

Для записи данных в файл напишем функцию writeData, которая на вход принимает два параметра source и content — путь к файлу и текст, который надо записать.

fun writeContent(source: String, content: String) {
    try {
        Files.write(Paths.get(source), content.toByteArray(), StandardOpenOption.APPEND, StandardOpenOption.CREATE)
    } catch (error: IOException) {
        error.printStackTrace()
    }
}

С помощью Paths.get(source) мы получаем путь к файлу для записи, затем с content.toByteArray() получаем массив байт для записи, а в конце указываем два параметра:

  • StandardOpenOption.APPEND — разрешает добавление данных в файл, без этой опции файл будет перезаписываться
  • StandardOpenOption.CREATE — если файл не найден, то создается новый по указанному пути.

Класс для работы с файлами в Kotlin

Теперь объединим наши функции в класс

class FileDataHelper {
    fun getContent(source: String): String {
        var result = ""
        try {
            val buffReader: BufferedReader = Files.newBufferedReader(Paths.get(source))
            result = buffReader.use { it.readText() }
        } catch (error: IOException) {
            error.printStackTrace()
        }
        return result
    }

    fun writeContent(source: String, content: String) {
        try {
            Files.write(Paths.get(source), content.toByteArray(), StandardOpenOption.APPEND, StandardOpenOption.CREATE)
        } catch (error: IOException) {
            error.printStackTrace()
        }
    }
}

Теперь использовать можно например так

println(
    FileDataHelper().getData("D:/data.txt")
)

или так…

FileDataHelper().writeData("D:/data.txt")

Код из статьи на GitHub — FileDataHelper

Выводы

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

Всем удачи в освоении Kotlin!

Оставить ответ