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

时间:2015-10-28 16:16:40

标签: java csv 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(","); 

1 个答案:

答案 0 :(得分:3)

只需使用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