记的前几个月抄一本书中的代码时报out of memory错误,当时就蒙了,处理很长时间都未果.今天和视频里的写法进行简单的比对和分析:
先是书中的给Field加值(content)
public String loadFileToString(File file)
{
try {
BufferedReader br = new BufferedReader(new FileReader(file)));
StringBuffer sBuffer = new StringBuffer();
String lineString = br.readLine();
/* while(lineString!=null)
{
sBuffer.append(lineString);
}
br.close();
return sBuffer.toString();*/
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
return null;
}
}
后者是视频中的代码
public static String readFileContent(File file) {
try {
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(new FileInputStream(file)));
StringBuffer content = new StringBuffer();
for(String line = null; (line = bufferedReader.readLine())!=null;)
{
content.append(line).append("\n");
}
return content.toString();
} catch (Exception e) {
// TODO: handle exception
throw new RuntimeException(e);
}
//return null;
}
原因是 : while循环一直在执行lineString这句话,直到内存枯竭.
应在while中加入while(linString = bufferreader.readline()!=null)