[英]elegant way to read large data with FilterInputStream object
我正在从函数中获取FilterInputStream
对象作为返回类型。 现在,我将作为流获取的文件是日志文件。 因此,我认为这可能是个大文件。 因此,我不想一次读取所有数据。 但是,循环读取数据是一件乏味的工作。
我需要在每个换行符处进行拆分,这意味着文件中的数据采用行分隔格式。 在public int read(byte[], int off, int len)
使用恒定大小的字节数组public int read(byte[], int off, int len)
因为它将引起很多情况。 我不想立即阅读它,因为它可能很大。
有没有一种优雅的方法可以做到这一点。
PS:我特别是指从FilterInputStream
扩展的S3ObjectInputStream ,它具有read()
函数。
将BufferedReader
包裹在FilterInputStream
的InputStreamReader
周围,并调用readLine().
好的,很抱歉,下一层是对的,您可以使用BufferedReader类,它有一个名为readLine的方法,它返回String对象而不是字节数组。 像这样
BufferedReader reader = new BufferedReader(new FileReader(new File("the file path")));
String date = reader.readLine();
if(!StringUtil.isBlank(date)){
//reade the file line by line
date = reader.readLine();
}
reader.close();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.