我有一个大型日志文件,我想逐个读取它。
示例。我有100Mb文本文件,我想一次读取1Mb。这需要100次。
任何相关的想法?
答案 0 :(得分:0)
您可以将文件传递给InputStream并调用函数read(byte [] b,int off,int len)并传递要在len中读取的总字节数并将右侧偏移传递给off,或者只需使用read()读取InputStream的一个字节并传递一个围绕此语句的循环
for(int i = 0; i < 1048576; i++)
{
input.read();
//do something with the input
}
答案 1 :(得分:0)
最简单的方法是,如果您不必读取1MB的锐利,即您必须逐行读取文件,并且当它超过1M停止时。在这种情况下,只需计算您读取的字节数: 1
BufferedReader reader = new BufferedReader(new InputStremReader(new FileInputStream(myfile)));
String line = null;
int bytesCount = 0;
while((line = reader.readLine()) != null) {
// process the line
bytesCount += line.getBytes().length;
if (bytesCount > 1024*1024) {
// 1MB reached. Do what you need here.
}
}
如果你需要1M锐利,那么任务就会变得有点复杂,因为你仍然希望使用方便的工具进行文本阅读,例如BufferedReader
。在这种情况下,创建自己的输入流,计算字节数并包装其他输入流。达到限制后,您的信息流应返回-1
作为EOF标记。但是,它应该实现方法reset()
,表示它继续阅读。实施将需要几分钟,所以我作为练习留给你。