我需要处理一个大文件,大约400K行和200M.但有时我必须自下而上处理.我怎样才能在这里使用迭代器(yield return)?基本上我不喜欢在内存中加载所有内容.我知道在.NET中使用迭代器更有效.
我有一个java ee应用程序,我使用servlet打印用log4j创建的日志文件.在读取日志文件时,通常会查找最后一个日志行,因此如果以相反的顺序打印日志文件,则servlet会更有用.我的实际代码是:
response.setContentType("text");
PrintWriter out = response.getWriter();
try {
FileReader logReader = new FileReader("logfile.log");
try {
BufferedReader buffer = new BufferedReader(logReader);
for (String line = buffer.readLine(); line != null; line = buffer.readLine()) {
out.println(line);
}
} finally {
logReader.close();
}
} finally {
out.close();
}
Run Code Online (Sandbox Code Playgroud)
我在互联网上找到的实现涉及使用StringBuffer并在打印之前加载所有文件,是不是有代码轻量级方式寻找到文件的末尾并读取内容直到文件的开头?