使用 contentResolver 将 docx 转换为 Base64 在 Android 上给出了不可读的格式

Converting docx to Base64 using contentResolver gives unreadable format on Android

我有一个文件 test.docx 包含 1 个单词 "Testing"。该文件位于我的保管箱文件夹中,我使用 contentResolver 从应用程序中打开它。

代码:

            val inputStream = context.contentResolver.openInputStream(uri)
            val allText = inputStream.bufferedReader().use(BufferedReader::readText)
            base64Image = Base64.encodeToString(allText.toByteArray(), Base64.NO_WRAP)

allText 会返回一些数据,但是当将其放入文本文件并将其另存为 .docx 时,我无法查看它,它已损坏。我想我应该在 bufferedReader 方法中添加一个 Charset。尝试了几个,但 none 成功了。

正确的代码应该是什么?

DOCX 不是纯文本。它是一种二进制格式。使用readBytes()读入字节:

val bytes = context.contentResolver.openInputStream(uri).readBytes()

请记住,如果内容过大,您的应用会崩溃并显示 OutOfMemoryError。请重新考虑您阅读全部内容的计划,更不用说将其转换为 base64。