Read CSV file column by column

前端 未结 8 1726
萌比男神i
萌比男神i 2020-11-29 04:31

I want to read specific columns from a multi column csv file and print those columns in other csv file using Java. Any help please? Following is my code to print each token

8条回答
  •  时光说笑
    2020-11-29 05:10

    We can use the core java stuff alone to read the CVS file column by column. Here is the sample code I have wrote for my requirement. I believe that it will help for some one.

     BufferedReader br = new BufferedReader(new FileReader(csvFile));
        String line = EMPTY;
        int lineNumber = 0;
    
        int productURIIndex = -1;
        int marketURIIndex = -1;
        int ingredientURIIndex = -1;
        int companyURIIndex = -1;
    
        // read comma separated file line by line
        while ((line = br.readLine()) != null) {
            lineNumber++;
            // use comma as line separator
            String[] splitStr = line.split(COMMA);
            int splittedStringLen = splitStr.length;
    
            // get the product title and uri column index by reading csv header
            // line
            if (lineNumber == 1) {
                for (int i = 0; i < splittedStringLen; i++) {
                    if (splitStr[i].equals(PRODUCTURI_TITLE)) {
                        productURIIndex = i;
                        System.out.println("product_uri index:" + productURIIndex);
                    }
    
                    if (splitStr[i].equals(MARKETURI_TITLE)) {
                        marketURIIndex = i;
                        System.out.println("marketURIIndex:" + marketURIIndex);
                    }
    
                    if (splitStr[i].equals(COMPANYURI_TITLE)) {
                        companyURIIndex = i;
                        System.out.println("companyURIIndex:" + companyURIIndex);
                    }
    
                    if (splitStr[i].equals(INGREDIENTURI_TITLE)) {
                        ingredientURIIndex = i;
                        System.out.println("ingredientURIIndex:" + ingredientURIIndex);
                    }
                }
            } else {
                if (splitStr != null) {
                    String conditionString = EMPTY;
                    // avoiding arrayindexoutboundexception when the line
                    // contains only ,,,,,,,,,,,,,
                    for (String s : splitStr) {
                        conditionString = s;
                    }
                    if (!conditionString.equals(EMPTY)) {
                        if (productURIIndex != -1) {
                            productCVSUriList.add(splitStr[productURIIndex]);
                        }
                        if (companyURIIndex != -1) {
                            companyCVSUriList.add(splitStr[companyURIIndex]);
                        }
                        if (marketURIIndex != -1) {
                            marketCVSUriList.add(splitStr[marketURIIndex]);
                        }
                        if (ingredientURIIndex != -1) {
                            ingredientCVSUriList.add(splitStr[ingredientURIIndex]);
                        }
                    }
                }
            }
    

提交回复
热议问题