【问题标题】:Read in the last n lines of a csv file using a BufferedReader使用 BufferedReader 读取 csv 文件的最后 n 行
【发布时间】:2016-01-28 12:46:06
【问题描述】:

我有一个程序使用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(","); 

【问题讨论】:

    标签: java csv bufferedreader


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 2016-12-06
      • 2011-03-29
      • 2018-09-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-08-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多