Преобразование docx в Base64 с использованием contentResolver дает нечитаемый формат на Android - PullRequest
0 голосов
/ 14 апреля 2019

У меня есть файл test.docx , содержащий 1 слово «Тестирование».Этот файл находится в папке Dropbox, и я открываю его из приложения с помощью contentResolver.

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 Ответ

1 голос
/ 14 апреля 2019

DOCX не простой текст. Это двоичный формат. Используйте readBytes() для чтения в байтах:

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

Имейте в виду, что ваше приложение будет аварийно завершать работу с OutOfMemoryError для большого контента. Пожалуйста, пересмотрите план чтения всего контента, не говоря уже о преобразовании его в base64.

...