从 /storage/emulated/ path in android 读取 .txt 字段数据 11

Read .txt field data from /storage/emulated/ path in android 11

我想从 /storage/emulated 应用程序特定路径的 .txt 文件中读取数据。我在同一个文件中成功写入了数据,但无法读取它。

将数据写入 txt 文件的代码。

val writer: FileOutputStream = openFileOutput(file.absolutePath, MODE_PRIVATE)
writer.write(str1.toByteArray())
writer.flush()
writer.close()

正在尝试从同一文件读取数据。

val text = StringBuilder()
val br = BufferedReader(FileReader(file))
var line: String?
while (br.readLine().also { line = it } != null) {
 text.append(line)
 text.append('\n')
 }
 br.close()

返回空值的行。

Try adding android:requestLegacyExternalStorage="true" to your manifest.

或更改它以符合 Android 11 的新范围存储系统。 参见 https://developer.android.com/about/versions/11/privacy/storage

从 .txt 文件读取字符串

Kotlin

val reader = FileReader(path)
val txt = reader.readText()
reader.close()

I want to read data from .txt file from /storage/emulated application-specific path. I have written data successfully in same file but not able to read it.

您没有写入 /storage/emulated 目录中的某个位置。您使用了 openFileOutput()。写入不同的位置。要从该位置读取,请使用 openFileInput()Context 上的相应方法。请务必使用您传递给 openFileOutput().

的相同文件名

您应该写入位置 /storage/emulated 目录。您已经使用过 openFileOutput() 。它指向上下文 returns 上的位置 getFilesDir()。你可以这么说,因为文档说:

Returns the absolute path to the directory on the filesystem where files created with openFileOutput(String, int) are stored.

要从您的位置读取,请使用 openFileInput(),与您传递给 openFileOutput().

的文件名相同的 Context 上的相应方法