Question

I have OpenCSV reader in a Java project and its reading data from CSV files for me, but right now Im hardcoding the number of colums in the loop that reads it. I can recall there was some method that could get the number of columns but I dont remember what it was called and how to use it.

Here is the code:

public ArrayList<ArrayList<String>> getCSVContent(String filepath) throws Exception {
        CSVReader reader = new CSVReader(new FileReader(FILE_PATH));
        ArrayList<ArrayList<String>> array = new ArrayList<ArrayList<String>>();
        String[] nextLine;
        while ((nextLine = reader.readNext()) != null) {
            ArrayList<String> list = new ArrayList<String>();
            for (int i = 0; i < 5; i++) { //5 is the number of columns in the file 
                list.add(nextLine[i]);
            }
            array.add(list);
        }
        reader.close();
        return array;
    }
Was it helpful?

Solution

Just count the items in the array with nextLine.length.

for (int i = 0; i < nextLine.length; i++) { 
  list.add(nextLine[i]);
}

Or use a for-each loop:

for (String col : nextLine) {
  list.add(col);
}

OTHER TIPS

Well a easy way is that you read the first line with a Scanner of BufferedReader and count the ";" or what you use to split the columns.

You are able to count it if you use

string.toCharArray();

and ++ a Integer if it is ';'.

A second way is the look at the methods of CSV Reader. I don't know them but you can type anywhere in eclipse(don't know how it works in netbeans) "reader." and press control + space. If you have luck there is one.

Try this one to get the column count: reader.getColumnCount()

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top