Kotlin: преобразовать двоичный входной поток в строку base64 в блоках/буферизованном виде?Android

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Kotlin: преобразовать двоичный входной поток в строку base64 в блоках/буферизованном виде?

Сообщение Anonymous »

В настоящее время я пытаюсь прочитать данный входной поток как строку в кодировке Base64 в Kotlin. К сожалению, все приложение Android аварийно завершает работу с ошибкой недостаточно памяти, как только размер файла превышает 20 мегабайт. Мне нравится расширять это как минимум до 40 МБ.
Я думаю, мне нужно читать и преобразовывать байты потока в блоки типа 8 КБ для обработки, но я не могу найти ни одного примера Kotlin. о том, как это сделать, поскольку я не могу просто преобразовать блоки в base64 и объединить их. Это не работает для base64 из-за кодировки.
Я думаю, мне нужен какой-то поточный кодировщик base64, и я не могу найти для этого никакого решения, которое у меня работает. Код JAVA, который я могу найти здесь, в StackOverflow, я не могу преобразовать в Kotlin, поскольку я новичок в Kotlin и Java в целом :-(
Кроме того, я читаю двоичные файлы данные и не могу использовать ни одну функцию lineReader, которую я нахожу повсюду. Она должна работать с блоками заданного размера в байтах.
Это функция, которая используется в настоящее время. происходит сбой, если размер файла превышает 20 МБ:

Код: Выделить всё

private fun pushAttachmentToJS(uri: Uri) {
try {
val inputStream = contentResolver.openInputStream(uri)
inputStream.use { stream ->

// Next two lines need a replacement working in blocks
val fileBytes = stream?.readBytes()
val fB64 = Base64.encodeToString(fileBytes, Base64.NO_WRAP) // 

Подробнее здесь: [url]https://stackoverflow.com/questions/79199797/kotlin-convert-binary-inputstream-to-base64-string-in-blocks-buffered[/url]
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»