我为服务器获得了非常大的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
字符串,以便将其解码回图片。
答案 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()(也许可以考虑将字符串转换为数组或流?)