即然String是有限的,我们可以换一个思路:
设String最大length为64k,
当StringBuffer的length<64k时,用StringBuffer.toString().
当StringBuffer的Length>64k时,将StringBuffer.length/64k,然后再用substring取出每一段的String.

解决方案 »

  1.   

    StringBuffer buffer = new StringBuffer();
    // buffer appends or inserts text.
    char[] chars = new char[buffer.length()];
    buffer.getChars(0, buffer.length()-1, chars, 0);
    CharArrayReader reader = new CharArrayReader(chars);
    // 如果需要,可以将reader转化成流。顺便说一句,二进制流(字节流)采用Stream,字符流采用Reader/Writer。
    XML文档应该是Unicode字符流,采用Reader/Writer更好。
      

  2.   

    老兄,String的上限是最大的int,大概在2G左右,如果你的东东把String都撑破了,呵呵,那需要多少内存啊。
      

  3.   

    我也觉得奇怪,怎么会有人撑破String?
      

  4.   

    哈哈,有意思,不过我觉的turbochen 的想法很好,它山之石,可以攻玉嘛pfpf
      

  5.   

    我认为撑破String不现实。
    在撑破String以前一定会有内存不足的错误——处非你有2GB以上的内存——羡慕啊!!!
      

  6.   

    回复人: lun2001(小伦) (  ) 信誉:100  2002-04-02 12:40:00  得分:0  
     
     
      写错了
    InputString in=ByteArrayInputStream(s_tmp.getBytes());
    应该是
    InputStream in=..........