Skip first line while reading CSV file in Java

前端 未结 8 1595
别跟我提以往
别跟我提以往 2021-02-15 00:27

I am writing a parser code to read a .csv file and parse it to XML. This is the code I have and it works, except I would like it to skip the first line in the file. So I decided

相关标签:
8条回答
  • 2021-02-15 00:49

    For skipping first line(which normally contains header of the columns) take a variable and increase this variable in while loop at first place, and continue;

    int lineNumber = 0;
    
    and then in while loop 
    
    while ((line = br.readLine()) != null) {
                            if(lineNumber == 0) {
                                lineNumber++;
                                continue;
                            }
                            lineNumber++;
    
                           //do waterver u have to do with the tokens in this line(second line)
    
                }
    
    0 讨论(0)
  • 2021-02-15 00:52

    You might consider placing headerLine = br.readLine() before your while loop so you consume the header separately from the rest of the file. Also you might consider using opencsv for csv parsing as it may simplify your logic.

    0 讨论(0)
  • 2021-02-15 00:54

    I am rather confused by your code, your have the lineMap and you also have fw (whatever that is). Which one are you using? You say you want to skip the first line, but you don't

    if (firstLine == true) {
       firstLine = false;
       continue;
    }
    

    I would also suggest using a library like CSVReader which I belive even has a property ignoreFirstLine

    http://opencsv.sourceforge.net/apidocs/au/com/bytecode/opencsv/CSVReader.html

    0 讨论(0)
  • 2021-02-15 00:57
    boolean isRecord = false;
    for (CSVRecord record : records) {
        if(isRecord){
            //process records here.
        }else{
            isRecord = true;
        }
    }
    

    Instead of adding counter adding flag will not hit the performance.

    0 讨论(0)
  • 2021-02-15 00:58

    Create a variable interation and initialize with 0. Check it as very first thing in while loop.

    String line;
    int iteration = 0;
    while ((line = br.readLine()) != null) {
        if(iteration == 0) {
            iteration++;  
            continue;
        }
        ...
        ...
    }
    
    0 讨论(0)
  • 2021-02-15 01:09

    why don't you just use the for loop

    for(int i=1; (line = br.readLine()) != null; i++)
    {
        //Your code
    }
    
    0 讨论(0)
提交回复
热议问题