有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

读取CSV Java时获取While循环中的最后一行数据

在循环中遍历整个文件时,我试图读取CSV文件中的最后一行数据。我能很好地阅读和解析,但我似乎不知道如何停在最后一行。我不想硬编码需要多少次迭代

代码:

File inputF = new File("T.csv");
InputStream getStream = new FileInputStream(inputF);
         
boolean flag = false;
            
            
    try {
        System.out.println("Checking Values of CSV...");
        if (getStream.read() != -1) {
            BufferedReader reader = new BufferedReader(new InputStreamReader(getStream));
            String line;
            String headerLine;
            int counter = 0;
            headerLine = reader.readLine();
            
            //change condition to end at last row
            while ((line = reader.readLine()) != null) {
               // logic to read and parse
                        
            }
            System.out.println(line);
            reader.close();
                    
        }
    } catch (IOException e) {
          e.printStackTrace();
        }

输出:

null

预期输出(不准确,实际数据为csv输出):

CSV DATA 

重述-

我想在while循环中设置一个条件,使其在最后一行停止,以便我可以管理它。我无法硬编码它,因为行的数量将根据文件读取而改变

任何帮助都将受到感谢


共 (2) 个答案

  1. # 1 楼答案

    我想这样的事情可以胜任。您只需要存储您成功读取的最后一条通道(我正在使用line),当您无法读取下一条通道(在nextLine中读取)时,您就完成了

    InputStream getStream = new FileInputStream(inputF);
             
    boolean flag = false;
                
                
        try {
            System.out.println("Checking Values of CSV...");
            if (getStream.read() != -1) {
                BufferedReader reader = new BufferedReader(new InputStreamReader(getStream));
                String line;
                String nextLine;
                String headerLine;
                int counter = 0;
                headerLine = reader.readLine();
                
                //change condition to end at last row
                while ((nextLine= reader.readLine()) != null) {
                   line = nextLine;
                   // logic to read and parse
                            
                }
                System.out.println(line);
                reader.close();
                        
            }
        } catch (IOException e) {
              e.printStackTrace();
            }
    
  2. # 2 楼答案

    我知道你想在进入环路时停在最后一行。这可以按如下所示进行。如果您只想得到最后一行,下面的代码也可以

            String headerLine;
            String footerLine;
            headerLine = reader.readLine();
            do {
                String line = reader.readLine();
                if (line == null) {
                    // do something with footerLine
                    break;
                }
            
               // logic to read and parse
               footerLine = line;
            } while (true);
    
            System.out.println(footerLine);
            // footerLine is the last line by now
            reader.close();