项目中使用到了读文件,但是有的文件很大。一下子加入到内存中再循环取,效率很底,试着用分段读,这个方法可行。把代码贴出来,如果大家有更好的方法。欢迎指正。
public static List<Keyword> readFile(int formIndex, int toIndex) {
List<Keyword> lists = new ArrayList<Keyword>();
String path = getPadFilePath();
try {
FileReader fr = new FileReader(path);
BufferedReader br = new BufferedReader(fr);
String temp;
int i = 0;
while ((temp = br.readLine()) != null) {
i++;
if (i > formIndex && i < toIndex) {
lists.add(new Keyword(temp));
}
}
fr.close();
} catch (Exception e) {
log.error("read file exception :" + getExceptionStr(e));
}
return lists;
}
注:fromIndex -- 起始位置。toIndex --- 结束位置。
之前的做法是用的是List中有一个subList的方法,这个也可以实现,但是目的不一样。如果是那样的话。做起来很简单。