2011-09-11 6 views
0

javaでは、次のコードを使用してバイト配列を文字列に変換できます。バイト配列をJavaの文字列をサポートする文字列に変換するアルゴリズム

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

この方法では、900 KBを超えるファイルに問題があります。私の場合は

私は、このファイルを取得したいWebServiceがアンドロイドにファイル

WebService: File-> Base64-> encrypted string 

を送るあります

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

私はラインに新しい文字列(バイト単位で復号化に問題を抱えています、 " UTF-8 ")。 900 MBを超えるファイルの場合

このメソッドを実装します。誰も私にこのメソッドのソースコードを教えてもらえますか?

文字セットを無視すると、バイト配列を文字列に変換するのは簡単です。

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行目のアプリケーションが予期せず停止します。

+0

Android +(文字列> 900 MB).... hmm .. – aioobe

+0

webserviceからBase64に変換されたバイナリファイルを含む暗号化されたファイルを受け取ります。 – breceivemail

+0

アプリケーション内で900 MBのバイト配列をロードするにはどうすればいいですか? –

答えて

0

に記載されているように、CharsetDecoder、具体的にはthis overridedecodeとすることができます。ソースByteBufferは、FileInputStreamを取得し、getChannelを呼び出してからmapを呼び出して取得することができます。メモリの問題を回避するために、同様にファイルにマップされたCharBufferに出力することができます。

+0

私に例を挙げてもらえますか? – breceivemail

+0

私はjavaで新しいです。 CharsetDecoderを使用するためのサンプルやリンクを教えていただけますか? ありがとう、 – breceivemail

+0

@breceive、私はあなたが試みることを提案し、助けが必要な場合は、コードにフォローアップの質問を投稿してください。 –

関連する問題