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 указанные в этом ответе.