Android / Kotlin читает файл с помощью Java.io.File: проблема с дорогой

Я пытаюсь разработать свое первое приложение для Android с помощью Kotlin. На данный момент я пытаюсь прочитать файл, расположенный в моем проекте Android. У меня есть следующая архитектура в моей папке «Java»:

/java/example.first.com.monapp/controller/FirstActivity.kt /java/example.first.com.monapp/controller/WelcomeActivity.kt /java/example.first.com.monapp/model/words.kt /java/example.first.com.monapp/model/wordsData 

wordsData – текстовый файл с необработанными данными (3 слова на строку, разделенные символом «;»)

Код в словах.kt:

 package example.first.com.monapp.model import java.io.File data class Word(val wordFr:String, val wordRu:String, val active:Boolean) fun readFileKotlin(): List<Word> { val fileToRead="wordsData" val wordList = mutableListOf<Word>() var reader= File(fileToRead).readLines() var wrdLst:List<Word> for (line in reader) { val wrdProperties = line.split(";") wordList.add(Word(wrdProperties[0], wrdProperties[1], wrdProperties[2].toBoolean())) } wrdLst=wordList return wrdLst } 

Я вызываю функцию readFileKotlin во время создания моей активности, но я постоянно получаю «java.io.FileNotFoundException». Нет такой ошибки файла или каталога.

Я попробовал несколько вариантов пути, таких как

 val fileToRead="model/wordsData" 

или

 val fileToRead="/java/example.first.com.monapp/model/" 

или

 val fileToRead="/java/example/first/com/monapp/model/" 

но ничто из этого не работает.

Что я делаю не так ?

Заранее спасибо !

    поместите файл wordsData в папку assets Android, это папка, в которую вы можете поместить исходные данные в android

    Затем в вашей деятельности вы можете получить InputStream следующим образом:

     getAssets().open("wordsData.txt") 

    Начиная с Java 7 вам лучше использовать материал java.nio , особенно класс Path вместо File , но это не решит вашу проблему:

     val file = Paths.get(fileToRead) Files.readAllLines(file) 

    Пути, которые вы упомянули, не являются абсолютными, то есть, начиная с корня вашего устройства, я думаю. В результате этот путь не будет найден во время выполнения. Вы можете проверить, распечатав Paths.get(fileToRead).toAbsolutePath() .

    Чтобы исправить вашу проблему, используйте assets указанные в этом ответе.

    Intereting Posts
    Идиоматический способ чтения двоичного файла с Kotlin? Ошибка: обработчик аннотации '__gen.AnnotationProcessorWrapper_debug_android_databinding_annotationprocessor_ProcessDataBinding' не найден Как разрешить нарушение ограничения конечного ограничения в Котлине? Ошибка сборки после обновления до Android Studio 3.0 с помощью Kotlin ProcessBuilder не может найти Kotlin в пути Альфа-анимация ViewPropertyAnimator не работает Устаревшее предупреждение Kotlin Runtime в Android Studio Наследование Котлина с дженериками Низкая производительность анимации параметров макета в Android Не удается выполнить единичный тест в Kotlin (ExecutionException, Aapt2Exception) Как создать толстую банку с градиентом kotlin script Out-projected type «ArrayList <*>» запрещает использование «public open fun add (index: Int, element: E): Unit, определенный в java.util.ArrayList ' Как я могу присоединиться к трем объектам в GreenDao? Kotlin / Java, строковый массив еще не инициализирован при вызове метода Обменный код между платформами / языками (например, Swift, Kotlin, JavaScript)