关于读取文件字符的两种写法在Lucene中的问题

来源:互联网 发布:服务器端 java 编辑:程序博客网 时间:2024/05/20 14:19
 


记的前几个月抄一本书中的代码时报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 exceptione.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 exceptionthrow new RuntimeException(e);}//return null;}

原因是 : while循环一直在执行lineString这句话,直到内存枯竭.

应在while中加入while(linString = bufferreader.readline()!=null)

原创粉丝点击