JavaME Base64InputStream.decode()限制为64k字符串大小

时间:2012-04-23 15:43:05

标签: java blackberry java-me base64

如何克服字符串大小限制。

似乎在大小超过64k的字符串上调用decode会失败。

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

我尝试了很多,包括使用

        Base64InputStream bs64 = new Base64InputStream(is);

然后尝试从bs64流中获取。

然而,看起来大尺寸会导致解码错误。 (如果大小低于64k的原始方式,它不会出错。我花了一整天的时间来试图找到这个......

2 个答案:

答案 0 :(得分:4)

您可以用较小的块解码字符串。一次解码3个字节的块或多个3个字节(1024个可以很好地完成)。

答案 1 :(得分:1)

尝试将字符串分解为块(通过将字符串转换为字节)。对每个块(字节块)进行编码,直到完成对完整字符串的编码。 另一方面。解码每个块然后组合以获取字符串。

注意:不要组合所有块(字节块)然后尝试解码它,因为我这样做并且解码错误。