0

我有一个很大的日志文件,我想一个一个地读取 1Mb。

Example.我有 100Mb 的文本文件,我想一次读取 1Mb。那需要100次。

任何相关的想法?

4

2 回答 2

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
}
于 2013-05-27T09:49:02.677 回答
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()指示它继续阅读的方法。实施将需要几分钟,所以我把它留给你作为练习。

于 2013-05-27T09:49:19.833 回答