我有一个很大的日志文件,我想一个一个地读取 1Mb。
Example.我有 100Mb 的文本文件,我想一次读取 1Mb。那需要100次。
任何相关的想法?
我有一个很大的日志文件,我想一个一个地读取 1Mb。
Example.我有 100Mb 的文本文件,我想一次读取 1Mb。那需要100次。
任何相关的想法?
您可以将文件传递给 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
}
最简单的方法是如果您不必读取 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()
指示它继续阅读的方法。实施将需要几分钟,所以我把它留给你作为练习。