Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/363.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何每隔1Mb读取文本文件[.log文件]_Java_Size_Text Files_Buffered - Fatal编程技术网

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

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

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

我有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
}
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. 
    }
}