android - 从android内部存储读取文件

标签 android kotlin bufferedreader filenotfoundexception

我在 my Tablet\Tablet\Android\data\my.app.package\files\data 中放置了一个名为 test.txt 的文件,其中包含几行文本。这是由 Windows 报告的。

Kotlin 抛出异常 (FileNotFound),我也尝试指定我认为是文件的真实路径,但似乎无法使用以下路径获取它:

"/0/Android/data/my.app.package/files/data/test.txt"(我的应用程序的数据目录)。这个目录肯定存在,因为我可以在设备文件管理器中看到它。

此文件包含 2 行文本,我试图读入这些文本以根据它们的值运行特定任务。我已经尝试使用 BufferedReader,但我遇到了 FileNotFound 异常...

这是我的代码:

fun readFile() {
    val yourFilePath = "/0/Android/data/my.app.package/files/data/test.txt"
    val yourFile = File(yourFilePath)

    print(yourFile.name)
    val file = File(yourFilePath)
    file.bufferedReader().forEachLine {
        println("value = $it")
    }

}

非常感谢任何帮助。谢谢!

最佳答案

  1. filesDir 指向内部存储文件目录
  2. use block 在您想要自动关闭流时非常有用。
  3. try-catch block 来处理任何 IO 异常,例如FileNotFoundException。
try {
    val file = File(filesDir, "test.txt")
    if (file.exists()) {
        file.bufferedReader().useLines {
            ...
        }
    }
} catch (e: IOException) {
    ...
}

更深入了解的好文章:Medium

通过以下方式查看您的内部存储以确保您的文件存在:

AndroidStudio -> View -> Tools Windows -> Android Device Explorer

关于android - 从android内部存储读取文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62023773/

相关文章:

java - Android AlertDialog 如何在显示之前禁用按钮?

android - 如何在android中为EditText添加边框

kotlin - Kotlin协程中的resume或dispatcher方法是如何工作的,导致输出顺序不同

java - JTextArea 中的 BufferedReader 输出

android - ListView 中的额外信息

android - 是否可以创建一个监听硬件按键的 Android 服务?

android - 如何在 Kotlin 中初始化未知类型的属性?

java - 无法将资源作为流读取

java - 从文件中读取俄语字符(javaSE)

java - 无法正确启动 Reader 对象