欠伸展肢体,吟咏心自愉。这篇文章主要讲述使用contentResolver将docx转换为Base64会在Android上提供不可读的格式相关的知识,希望能为你提供帮助。
我有一个文件test.docx包含1个单词“Testing”。此文件位于我的Dropbox文件夹中,我使用contentResolver在App中打开它。
文章图片
码:
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。尝试了一对,但没有一个工作。
什么应该是正确的代码?
答案
DOCX
不是纯文本。它是二进制格式。使用readBytes()
读取字节:val bytes = context.contentResolver.openInputStream(uri).readBytes()
【使用contentResolver将docx转换为Base64会在Android上提供不可读的格式】请记住,您的应用程序将崩溃与
OutOfMemoryError
大内容。请重新考虑您的计划以阅读整个内容,更不用说将其转换为base64。推荐阅读
- Kotlin范围函数(Android EditText支持* apply *,* let *和* run *但不支持* with *)
- Koin如何注入Android活动/ appcompatactivity之外
- 在Mapbox Android中回调locationChanged
- 如何在kotlin android中将pdf文件编码为base64字符串
- 从Kotlin构造函数android中的Parcelable读取List列表
- 如何将加载覆盖进度条覆盖到android的“底部导航视图”(使用约束布局)
- 在浏览器中打开URL,从android上的shell脚本
- 使用adb命令测量Android应用的启动时间
- Android Recyclerview项目Textview在某些项目中不会显示