🗒 Задача¶
В курсовой работе мы разрабатываем телеграм-бота на Kotlin, который помогает пользователям учить иностранные слова. Создай extension функцию для класса File из стандартной библиотеки, которая будет записывать переданное ей слово в файл.
-
дополнительные материалы про файлы есть в 1-2 этапах курсовой;
-
функция-расширение должна записывать текст в нижнем регистре;
-
функция-расширение должна записывать текст в начало файла.
❌ Ошибки¶
✏️ Комментарии¶
Понимаю, что очень не очень метод, читать файл в буфер, перезаписывать файл новой строкой, добавляя содержимое буфера к новой строке, мб, с маленьким файлом еще ок, но на большом файле способ по идее загнется, но я долго думал и искал метод, позволяющий перевести каретку в начало файла для записи или что-то подобное сделать но так и не нашел способ избежать метод перезаписи файла.
Круто что мыслишь в этом направлении, возможно первый из студентов кто задумался о памяти 👍
Но раз ты напрашиваешься, давай попробуем порешать :)
Давай создадим большой файл:
val file = File("big.txt")
if (!file.exists()) {
val bytes = (0..10_000_000).map { it.toByte() }.toByteArray()
(0..1000).forEach { _ ->
file.appendBytes(bytes)
}
}
Попробуй свой метод на нем. Должно упасть из-за нехватки Heap.
Чтобы такого не было, нужно использовать небольшой буфер.
Попробуй решить задачу при помощи `RandomAccessFile("big.txt", "rw")`
Но это факультативно, можешь ограничится правками в комментах.
ps: Сразу скажу - я за пол часика не решил :)