处理非常大的字符串Java

时间:2014-04-11 13:38:05

标签: java android string stringbuilder

我为服务器获得了非常大的STRING

背景 实际上我正在将图像转换为Base69字符串并将其存储在我的服务器上,而不是调用服务来取回字符串。我正在尝试将String存储到String variable这样的

String pic="";
if (payload.substring(i, i+10).equals("<picture >")) {
  for (int j=i+10;j<payload.length();j++) {
    if (payload.substring(j, j+5).equals("</pic")) {
      user.setCountry(country);
      user.setDOB(dob);
      user.setUsername(uname);
      user.setPic(pic);
      users.add(user);
      country="";
      uname="";
      pic="";
      dob="";
      i=j+5;
      break;
    } else {
      pic = pic + payload.substring(j, j+1);
    }

但问题是,经过一段时间我的程序崩溃了,我没有将完整的String转换为变量pic

有没有办法处理来自服务器的很长的字符串?我的意思是说如何在变量Base64中完全获得相同的pic字符串,以便将其解码回图片。

2 个答案:

答案 0 :(得分:1)

通过以下内容找到你想要的结尾:

int endPos = payload.indexOf("</pic>", currentPos);

然后执行一个子字符串来获取完整的图片数据:

String pic = payload.substring(currentPos, endPos);

答案 1 :(得分:0)

除了if语句中的代码似乎与手头的字符串无关之外,你的else语句中有String concatenation in a loop,这会导致性能下降。

另一个值得关注的问题是您滥用substring(),请参阅Time complexity of Java's substring()(也许可以考虑将字符串转换为数组或流?)