使用 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。
我有一个文件 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。