繁体   English   中英

用FilterInputStream对象读取大数据的一种优雅方法

[英]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包裹在FilterInputStreamInputStreamReader周围,​​并调用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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM