日期:2014-05-20  浏览次数:20824 次

在使用BufferedWriter写字符串的时候出错OutOfMemoryError
在取MQ的MSG的时候,一个MSG是4M。while里面这样写数据,当接收第一条消息的时候给一个路径,然后直到CONTROL的时候写入。但运行时会报错OutOfMemoryError,哪位帮忙修改一下。或者是每一次都写入,或者是先打开,写一个关闭后再打开,或者其他的办法,谢谢。

if (fileStatus.contains("FIRST")){
fileName = applid.split(" ")[0];
filePath = "d:/test/" + fileName + "_" + GetDate() + ".txt";
xmlText = new String(rawData);
}else if (fileStatus.contains("MIDDLE")){
xmlText = xmlText + new String(rawData);
}else if (fileStatus.equals("LAST")){
xmlText = xmlText + new String(rawData);
}else if (fileStatus.equals("CONTROL")){  
BufferedWriter bw = new BufferedWriter(new FileWriter(filePath));
bw.write(xmlText);  
bw.flush();  
bw.close();
break;
}


------解决方案--------------------
1.用StringBuilder拼接字符串。
2.while 循环里做个统计,每100条写一次文件,之后追加