Java 如何每隔1Mb读取文本文件[.log文件]
我有一个很大的日志文件,我想一个接一个地读1Mb 我有100Mb的文本文件,我想一次读取1Mb。那需要100次Java 如何每隔1Mb读取文本文件[.log文件],java,size,text-files,buffered,Java,Size,Text Files,Buffered,我有一个很大的日志文件,我想一个接一个地读1Mb 我有100Mb的文本文件,我想一次读取1Mb。那需要100次 有什么相关的想法吗?您可以将文件传递到InputStream,调用函数read(byte[]b,int off,int len),并在len中传递要读取的字节总数,并将正确的偏移量传递到off,或者只需使用read()读取InputStream的一个字节,并围绕该语句传递一个循环 for(int i = 0; i < 1048576; i++) { input.rea
有什么相关的想法吗?您可以将文件传递到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
}
for(int i=0;i<1048576;i++)
{
input.read();
//对输入做些什么
}
最简单的方法是不必读取1MB夏普,即只需逐行读取文件,当文件超过1M时停止。在这种情况下,只需计算已读取的字节数:
一,
但是,如果您需要1M sharp,任务会稍微复杂一些,因为您仍然希望使用方便的工具来读取文本,如
BufferedReader
。在本例中,创建自己的输入流,对字节进行计数并包装其他输入流。一旦达到限制,您的流应返回-1
作为EOF的标记。但是,它应该实现方法reset()
,该方法发出继续读取的信号。实现需要几分钟的时间,因此我将把它留给您作为练习 可能重复:问题不清楚。你的意思是你想一次读一个1MB的chunck,这将是微不足道的,还是你的意思是其他的?
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.
}
}