how to read csv file without knowing header using java?

前端 未结 3 583
忘了有多久
忘了有多久 2020-12-22 09:16

i have to read CSV file in java, I googled it but i got the way to read using the headers; but i have no information of the column headers and number of columns available i

相关标签:
3条回答
  • 2020-12-22 09:59

    If you don't know what the columns represent you can only read it as text with something like:

    final BufferedReader br = new BufferedReader(new FileReader(file));
    String line = null;
    while ((line = br.readLine()) != null) {
    
        final String[] lineValues = line.split(COLUMN_DELIMITER);
    }
    

    This way all your column values will be in these lineValues arrays (column1 will be lineValues[0] etc.).

    0 讨论(0)
  • 2020-12-22 10:07

    You can assume every row to be of class String and read everything into an 2 dimensional array. Afterwards you could try to parse the strings into their appropriate Formats.

    But if you do not know the row data type this is only a guess.

    0 讨论(0)
  • 2020-12-22 10:11

    Casper datasets can do this is a few lines and will return a CDataRowSet which works in a similar way to a ResultSet. It can read the header from the file and return all Strings, eg:

    CBuilder builder = new CBuildFromFile(new File("people.csv"));
    CDataCacheContainer container = new CDataCacheContainer(builder);
    CDataRowSet cdrs = container.getAll();
    

    or it can also narrow the returned results to the smallest possible data type without losing fidelity. In doing so it can also handle missing integers and doubles (otherwise the resulting data type will remain as String), eg:

    CBuilder builder = new CBuildNarrowedFile(new File("people.csv")).setConvertMissing(true);
    CDataCacheContainer container = new CDataCacheContainer(builder);
    CDataRowSet cdrs = container.getAll();
    
    0 讨论(0)
提交回复
热议问题