我从函数中获取一个FilterInputStream
对象作为返回类型。现在我将作为流获取的文件是一个日志文件。所以我认为它可以是大文件。所以我不想一次读取所有数据。但是,循环读取数据是一项繁琐的工作。
我需要在每个换行符处拆分,这意味着文件中的数据采用行分隔格式。在public int read(byte[], int off, int len)
中使用一个恒定大小的字节数组,因为它会引起很多情况。我不想立刻阅读它,因为它可能很大。
是否有一种优雅的方式来做到这一点。
P.S。:我特别提到从FilterInputStream
扩展的S3ObjectInputStream,其中read()
具有{{1}}功能。
答案 0 :(得分:2)
在BufferedReader
周围的InputStreamReader
周围换FilterInputStream
并致电readLine().
答案 1 :(得分:-1)
好的,对不起,下一层是对的,你可以使用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();