n;
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 ColumnPositionMappingStrategy();
strategy.setType(Country.class); // 关联JavaBean
String[] columns = new String[] {"countryName", "capital"}; // the fields to bind do in your JavaBean,JavaBean里的类变量属性
strategy.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); //这两行注释掉的内容可以解决中文乱码问题
List list = csv.parse(strategy, csvReader);
for (Object object : list) {
Country country = (Country) object;
System.out.println(country.getCapital());
}
}
}
输出结果:
CAPITAL
New Delhi
Beijing
Washington D.C.
OpenCSV library中文乱码解决方法:
DataInputStream in = new DataInputStream(new FileInputStream(new File(csvFilename)));
csvReader = new CSVReader(new InputStreamReader(in,"utf-8"),',', '\'', 1); //这两行注释掉的内容可以解决中文乱码问题
参考资料:
http://viralpatel.net/blogs/java-read-write-csv-file/