Sameek Mishra
Sameek Mishra

Reputation: 9384

how to read csv file without knowing header using java?

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 in file. In this case How can i read CSV file.

Thanks

Upvotes: 0

Views: 9127

Answers (3)

tekumara
tekumara

Reputation: 8807

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();

Upvotes: 2

Simeon
Simeon

Reputation: 7792

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.).

Upvotes: 2

ayckoster
ayckoster

Reputation: 6827

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.

Upvotes: 3

Related Questions