Java opencsv--使用 Spring 的 PostConstruct机制,项目启动时,将CSV配置文件读取到内存 map 中
一.studentConfig.csv 文件:
ID,NAME,SCORE 1,张三,100 2,李四,90 3,赵五,60 4,王六,55
二.StudentConfigBean.java 文件:
package com.jiangge.config;
public class StudentConfigBean {
/**
* 配置 Bean
*/
private int id;
private String name;
private int score;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getScore() {
return score;
}
public void setScore(int score) {
this.score = score;
}
}
三.StudentConfig.java 文件:
package com.jiangge.config;
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.io.UnsupportedEncodingException;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.springframework.stereotype.Component;
import au.com.bytecode.opencsv.CSVReader;
import au.com.bytecode.opencsv.bean.ColumnPositionMappingStrategy;
import au.com.bytecode.opencsv.bean.CsvToBean;
import au.com.bytecode.opencsv.bean.HeaderColumnNameTranslateMappingStrategy;
import javax.annotation.PostConstruct;
@Component
public class StudentConfig {
/**
* 使用 Spring 的 PostConstruct机制,项目启动时,将CSV配置文件读取到内存 map 中
* 库version:opencsv-2.3.jar
*/
public static Map
studentMap;
@PostConstruct
public void init(){
HeaderColumnNameTranslateMappingStrategy
strategy = new HeaderColumnNameTranslateMappingStrategy
(); strategy.setType(StudentConfigBean.class); Map
columnMapping = new HashMap
(); columnMapping.put("ID", "id"); //csv头和 java类成员变量映射 columnMapping.put("NAME", "name"); columnMapping.put("SCORE", "score"); strategy.setColumnMapping(columnMapping); List
list = null; String csvFilename = "C:\\studentConfig.csv"; //TODO 放到项目路径下 CSVReader csvReader = null; DataInputStream in = null; try { in = new DataInputStream(new FileInputStream(new File(csvFilename))); } catch (FileNotFoundException e) { e.printStackTrace(); } try { csvReader = new CSVReader(new InputStreamReader(in,"utf-8")); //解决中文乱码,另注意csv文件的编码格式. } catch (UnsupportedEncodingException e) { e.printStackTrace(); } CsvToBean
csvToBean = new CsvToBean
(); list = csvToBean.parse(strategy, csvReader); studentMap = new HashMap
(); for (Object object : list) { StudentConfigBean studentCfgBean = (StudentConfigBean) object; studentMap.put(studentCfgBean.getId(), studentCfgBean); //放到 map 里 System.out.println("学生的配置文件读取"); System.out.println("Id==>" + studentCfgBean.getId() + " Name==>" + studentCfgBean.getName() + " Score==>" + studentCfgBean.getScore()); } } }
四:输出:
学生的配置文件读取 Id==>1 Name==>张三 Score==>100 学生的配置文件读取 Id==>2 Name==>李四 Score==>90 学生的配置文件读取 Id==>3 Name==>赵五 Score==>60 学生的配置文件读取 Id==>4 Name==>王六 Score==>55