Android / Kotlin使用Java.io.File读取文件:路径有问题

我正在尝试使用Kotlin在Android上开发我的第一个应用程序。 目前我尝试读取位于我的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个词,用“;”分隔)

word.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 { val fileToRead="wordsData" val wordList = mutableListOf() var reader= File(fileToRead).readLines() var wrdLst:List 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/" 

但没有一个工作。

我究竟做错了什么 ?

提前致谢 !

把文字数据文件放到android assets文件夹中,这是您可以在android中放置原始数据资源的文件夹

然后在你的活动中,你可以得到一个像这样的InputStream:

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

从Java 7开始,您应该使用java.nio东西,特别是Path类而不是File ,但这不能解决您的问题:

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

你提到的路径不是绝对的,也就是说,从你的设备的根源开始。 因此,在运行时将不会find该路径。 您可以通过打印出Paths.get(fileToRead).toAbsolutePath()来检查。

要解决您的问题,请使用此答案中提到的assets

Interesting Posts