簡體   English   中英

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

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

我有一個程序使用BufferedReader讀取CSV文件的第一行和最后一行,現在我需要將其轉換為讀取文件的第一行和最后一行,因為格式已更改。 但我不確定如何表示最后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(","); 

如果尺寸超過8只需使用Deque並將其移除。

由於隊列是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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM