Перейти к содержанию

KTB-02 Создать первичную версию словаря

Описание

Следующая часть видео по теории разработки программ. Уточнение требований и проектирование консольного тренажера:

// видео


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

// видео


Созданный в уроке файл words.txt теперь будет использоваться в качестве словаря.

Запишем в него несколько слов и переводы для них.

hello привет
dog собака
cat кошка

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

🗒 Задание

  1. Воспользоваться методом readLines(), чтобы достать строки из файла.
  2. Распечатать их в цикле (каждая с новой строки соответственно).
  3. Cоздать ветку с префиксом проекта (KTB-02-branch-name) и сделать в нее коммит.
  4. Ссылку на PR отправить в форму ниже.
    • В случае отклонения – внести исправления в Pull Request и отправить ссылку на него снова.
    • После аппрува смержить ветку в main/master и текущий этап будет считаться выполненным.

❌ Ошибки

✏️ Комментарии

Давай удалим ненужные комментарии из кода и будем двигаться дальше!

Некорректно создан файл:

Если в коде остается код создания нового файла: wordsFile.createNewFile()

Нам **не нужно** создавать новый файл, только читать его

Иногда файл words.txt размещают не в корне проекта, а где-то в своей папке:

Этот файл лучше положить в корень проекта и открывать по адресу `words.txt`. В будущем когда приложение будет публиковаться на сервер в виде jar-файла, так будет проще редактировать и пополнять словарь без пересборки проекта

Использование Java-классов

Это корректный способ чтения файла. Однако не рекомендуется использовать Java классы, если есть Kotlin альтернатива. Прежде всего - код будет более переносимым, отдельные классы и файлы можно было бы переносить, например, в веб или iOS. Давай воспользуемся `forEachLine {}` - это будет еще и короче.

Комментарии в коде

В итоговом проекте не нужно прописывать комментарии с заданием. Теперь все по взрослому, мы делаем продукт!

Решение

fun main() {

    val wordsFile = File("words.txt")
//    wordsFile.createNewFile()
//    wordsFile.writeText("tex 111 ")
//    wordsFile.writeText("text 222 ")
//    wordsFile.appendText("111 text 222 ")

    for (string in wordsFile.readLines()) {
        println(string)
    }

    println("- - -") // короткая альтернатива

    wordsFile.forEachLine {
        println(it)
    }
}