0

文字列サイズの制限を克服するにはどうすればよいですか。

サイズが64kを超える文字列でdecodeを呼び出すと失敗するようです。

        is = con.openInputStream();
        String str = new String(IOUtilities.streamToBytes(is), "UTF-8");
        byte[] theArray = Base64InputStream.decode(str);  

私はまた、使用を含むrtsを試しました

        Base64InputStream bs64 = new Base64InputStream(is);

そして、bs64ストリームから取得しようとしています。

ただし、大きなサイズを読み取るとデコードエラーが発生するようです。(元の方法で64k未満のサイズでもエラーが発生しない場合。私は、これを理解するために1日中費やしました。

4

2 に答える 2

4

文字列を小さなチャンクにデコードできます。一度に3バイトのチャンクまたは多数の3バイト(1024でうまくいく)をデコードします。

于 2012-04-23T16:12:06.633 に答える
1

文字列をチャンクに分割しようとしています(文字列をバイトに変換することにより)。文字列全体のエンコードが完了するまで、各チャンク (バイトのチャンク) をエンコードします。反対側。各チャンクをデコードし、結合して文字列を取得します。

注:すべてのチャンク(バイトのチャンク)を結合してからデコードしようとしないでください。これを行ってデコードエラーが発生したためです。

于 2012-08-06T07:24:22.303 に答える