Алгоритм преобразования байтовых массивов в String, поддерживающий кодировки в Java - PullRequest
0 голосов
/ 11 сентября 2011

В Java вы можете использовать следующий код для преобразования байтового массива в строку.

new String(bytes, "UTF-8");

этот метод имеет проблемы с файлами размером более 900 КБ.

в моем случае WebService отправляет файл

WebService: File-> Base64-> encrypted string

в Android я хочу получить этот файл:

Android: encrypted string-> decrypted string -> Base64 -> file

У меня проблема с расшифровкой в ​​строке new String (байты, "UTF-8"); для файлов более 900 МБ.

Я хочу реализовать этот метод. Кто-нибудь может дать мне исходный код этого метода?

Если вы игнорируете Charset, легко преобразовать байтовый массив в строку.

for (int i = 0; i < bytes.length; i++) {
    myString += (char) byteArray[i];
}

Я беспокоюсь о кодировке. Кто-нибудь может мне помочь?


редактирование:

Я написал следующий код:

Charset charsetInput = Charset.forName("UTF-8");
CharsetDecoder decoder = charsetInput.newDecoder();
CharBuffer cbuf = decoder.decode(ByteBuffer.wrap(bytes));
String result = cbuf.toString();

Но ничего не изменилось. В строке 3 приложение неожиданно останавливается.

1 Ответ

0 голосов
/ 11 сентября 2011

Как отмечено в документах , вы можете использовать CharsetDecoder, в частности это переопределение из decode.Вы можете получить источник ByteBuffer, взяв FileInputStream, позвонив getChannel, а затем вызвав map .Чтобы избежать проблем с памятью, вы можете вывести на CharBuffer аналогично сопоставленный с файлом.

...