如何每1Mb读取文本文件[.log文件]

时间:2013-05-27 09:38:36

标签: java size text-files buffered

我有一个大型日志文件,我想逐个读取它。

示例。我有100Mb文本文件,我想一次读取1Mb。这需要100次。

任何相关的想法?

2 个答案:

答案 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(),表示它继续阅读。实施将需要几分钟,所以我作为练习留给你。