Привет! Сегодня я расскажу как просто записать файл в 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 = «» куда и запишем в последствии наш результат.

Далее следует стандартный блок 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!