Sample.csv file:
COUNTRY,CAPITAL,POPULATIONIndia,New Delhi, 1.21BPeople's republic of China,Beijing, 1.34BUnited States,Washington D.C., 0.31B
1. Use readNext () to read CSV files in a row and return a String Array
package com.jiangge.csv.opencsvtest;import java.io.FileReader;import java.io.IOException;import au.com.bytecode.opencsv.CSVReader;//COUNTRY,CAPITAL,POPULATION//India,New Delhi, 1.21B//People's republic of China,Beijing, 1.34B//United States,Washington D.C., 0.31B/** * use readNext() method of CSVReader class to read CSV file line by line. * It returns a String array for each value in row. */public class ReadLineByLine {public static void main(String[] args) throws IOException {String csvFilename = "C:\\sample.csv";CSVReader csvReader = new CSVReader(new FileReader(csvFilename));String[] row = null;while((row = csvReader.readNext()) != null) { System.out.println(row[0] + " # " + row[1] + " # " + row[2]);}//...csvReader.close();}}
Output result:
COUNTRY # CAPITAL # POPULATIONIndia # New Delhi # 1.21BPeople's republic of China # Beijing # 1.34BUnited States # Washington D.C. # 0.31B
2. Read the entire CSV file at a time using the readAll () method and return the List
package com.jiangge.csv.opencsvtest;import java.io.FileReader;import java.io.IOException;import java.util.List;import au.com.bytecode.opencsv.CSVReader;//COUNTRY,CAPITAL,POPULATION//India,New Delhi, 1.21B//People's republic of China,Beijing, 1.34B//United States,Washington D.C., 0.31B/** * read full CSV file once. The readAll() method of CSVReader class comes handy for this. * The readAll() method returns a List of String[] for given CSV file. * @author jiangge */public class ReadAllTest {public static void main(String[] args) throws IOException {String[] row = null;String csvFilename = "C:\\sample.csv"; CSVReader csvReader = new CSVReader(new FileReader(csvFilename));List content = csvReader.readAll(); for (Object object : content) { row = (String[]) object; System.out.println(row[0] + " # " + row[1]+ " # " + row[2]);}//...csvReader.close();}}
Output result:
COUNTRY # CAPITAL # POPULATIONIndia # New Delhi # 1.21BPeople's republic of China # Beijing # 1.34BUnited States # Washington D.C. # 0.31B
3. Use other separator numbers and skip some rows. For more information, see here: Click to open the link.
CSVReader reader = new CSVReader (new FileReader (file ),';')
CSVReader reader = new CSVReader (new FileReader (file ),'#')
Skip the first five rows, starting from the first 6th rows:
CSVReader reader = new CSVReader(new FileReader(file), ',', '\'', 5);
Iv. Mapping CSV with Java beans
1. java bean
package com.jiangge.csv.opencsvtest;public class Country {private String countryName;private String capital;private String population;public String getPopulation() {return population;}public void setPopulation(String population) {this.population = population;}public String getCountryName() {return countryName;}public void setCountryName(String countryName) {this.countryName = countryName;}public String getCapital() {return capital;}public void setCapital(String capital) {this.capital = capital;}}
2. Associate JavaBean, Now we can map this bean with Opencsv and read the CSV file
Package com.jiangge.csv. opencsvtest; import java. io. dataInputStream; import java. io. file; import java. io. fileInputStream; import java. io. fileNotFoundException; import java. io. fileReader; import java. io. inputStreamReader; import java. util. list; import au.com. bytecode. opencsv. CSVReader; import au.com. bytecode. opencsv. bean. columnPositionMappingStrategy; import au.com. bytecode. opencsv. bean. csvToBean; // COUNTRY, CAPITAL, POPULATION // India, New Delhi, 1.21B // People's republic of China, Beijing, 1.34B // United States, Washington D. C ., 0.31B/*** map this bean (Country. java) with Opencsv and read the CSV file. check out below example: * @ author jiangge */public class JavaBeanMapWithCSV {public static void main (String [] args) throws FileNotFoundException {ColumnPositionMappingStrategy strategy = new partition (); strategy. setType (Country. class); // associate the JavaBeanString [] columns = new String [] {"countryName", "capital"}; // the fields to bind do in your JavaBean, the class variable attribute strategy in JavaBean. setColumnMapping (columns); CsvToBean csv = new CsvToBean (); String csvFilename = "C :\\ sample.csv"; CSVReader csvReader = new CSVReader (new FileReader (csvFilename )); // DataInputStream in = new DataInputStream (new FileInputStream (new File (csvFilename); // csvReader = new CSVReader (new InputStreamReader (in, "UTF-8 "),',', '\ '', 1); // The contents commented out by the two lines can solve the Chinese garbled problem List list = csv. parse (strategy, csvReader); for (Object object: list) {Country country = (Country) object; System. out. println (country. getCapital ());}}}
Output result:
CAPITALNew DelhiBeijingWashington D.C.
OpenCSV library Chinese garbled solution:
DataInputStream in = new DataInputStream (new FileInputStream (new File (csvFilename); csvReader = new CSVReader (new InputStreamReader (in, "UTF-8 "),',', '\ '', 1); // The contents commented out by the two lines can solve the Chinese Garbled text problem.
References:
Http://viralpatel.net/blogs/java-read-write-csv-file/