Java Read CSV File In Java With OpenCSV library 以及中文件乱码解决, Mapping CSV with Java beans(二)

2014-11-24 07:20:35 · 作者: · 浏览: 1
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/