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
    Создание прослушивателя TCP в Котлине Ошибка при попытке ввести ViewModelProvider в действие с помощью Dagger2 и Kotlin Все возможные комбинации из двух списков только классы разрешены в левой части литерала класса при использовании Mockito и kotlin Использование класса Kotlin в Java: не удается найти символ Используя черты с классами данных в Котлине? Замок Kotlin подстановочного знака в параметре обратного вызова списка Какова цель Декларации объекта внутри герметичного класса в Котлине? Корда: Сторона отклонила запрос сеанса, поскольку Провайдер не был зарегистрирован Форсировать ориентацию youTubePlayerFragment Котлин и родовые конструкторы оставляют меня озадаченным Kotlin coroutines использует продукты и mockito, чтобы издеваться над производственной работой Настройка кинжала 2 при условии модернизации Оператор неразрешенных времен Как получить имена параметров через отражение в котлин?