使用 BufferedReader 读取 csv 文件的最后 n 行

Read in the last n lines of a csv file using a BufferedReader

我有一个程序使用 BufferedReader 读取 CSV 文件的第一行和最后一行,现在我需要将其转换为读取第一行和 最后 8 文件的行,因为格式已经改变。但我不确定如何表示最后 8 行。

我如何(可以)使用 BufferedReader

表示文件的最后 8 行
try(BufferedReader reader = new BufferedReader(
        new InputStreamReader(
                response.getEntity().getContent()))) {

     if(reader != null){
         String aux = "";
         String lastLineMinusOne = "";
         while ((aux = reader.readLine()) != null) {
             String auxTrimmed = aux.replaceAll("(?m)^[ \t]*\r?\n", "");
             if(count == 0)firstLine = auxTrimmed;
             lastLineMinusOne = lastLine;
             lastLine = auxTrimmed;
             count ++;
        }
        logger.info("Count = " + count); 
        columns = firstLine.split(",");

        data = lastLine.split(","); 

只需使用 Deque 并在大小超过 8 时删除它们。

由于队列是 FIFO 那么如果使用 remove() 它只会保留最近的 8 个条目。

Deque<String> queue=new ArrayDeque<String>();
String line;
while ((aux = reader.readLine()) != null){
  if(queue.size()>=8){
    queue.remove();
  }
  queue.add(aux);
}
System.out.println(queue.size());//should print 8