使用contentResolver将docx转换为Base64会在Android上提供无法读取的格式

时间:2019-04-14 14:14:08

标签: android kotlin android-contentresolver

我有一个文件 test.docx ,其中包含1个单词“ Testing”。该文件位于我的保管箱文件夹中,我使用contentResolver在App中打开它。

enter image description here

代码:

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

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

正确的代码应该是什么?

1 个答案:

答案 0 :(得分:1)

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

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

请记住,您的应用会因大内容而以OutOfMemoryError崩溃。请重新考虑您阅读全部内容的计划,更不用说将其转换为base64了。