0

FilterInputStream从函数中获取一个对象作为返回类型。现在,我将作为流获取的文件是一个日志文件。所以我认为它可以是大文件。所以我不想一次读取所有数据。但是循环读取数据是一项乏味的工作。

我需要在每个换行符处拆分,这意味着文件中的数据采用行分隔格式。使用恒定大小的字节数组,public int read(byte[], int off, int len)因为它会引起很多情况。我不想立即阅读它,因为它可能很大。

有没有一种优雅的方式来做到这一点。

PS:我特别指的是S3ObjectInputStream扩展的FilterInputStream功能read()

4

2 回答 2

2

环绕BufferedReaderaInputStreamReaderFilterInputStream调用readLine().

于 2013-09-16T09:47:09.363 回答
-1

OK,不好意思,下楼说的对,可以使用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();
于 2013-09-16T10:18:13.520 回答