Java opencsv--使用 Spring 的 PostConstruct机制,项目启动时,将CSV配置文件读取到内存 map 中

来源:互联网 发布:windows escape python 编辑:程序博客网 时间:2024/05/29 14:25


Java opencsv--使用 Spring 的 PostConstruct机制,项目启动时,将CSV配置文件读取到内存 map 中



一.studentConfig.csv 文件:

ID,NAME,SCORE1,张三,1002,李四,903,赵五,604,王六,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;  @Componentpublic class StudentConfig {/** * 使用 Spring 的 PostConstruct机制,项目启动时,将CSV配置文件读取到内存 map 中 * 库version:opencsv-2.3.jar */public static Map<Integer, StudentConfigBean> studentMap;@PostConstruct      public void  init(){HeaderColumnNameTranslateMappingStrategy<StudentConfigBean> strategy = new HeaderColumnNameTranslateMappingStrategy<StudentConfigBean>();strategy.setType(StudentConfigBean.class);Map<String, String> columnMapping = new HashMap<String, String>();columnMapping.put("ID", "id"); //csv头和 java类成员变量映射columnMapping.put("NAME", "name");columnMapping.put("SCORE", "score");strategy.setColumnMapping(columnMapping);List<StudentConfigBean> 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<StudentConfigBean> csvToBean = new CsvToBean<StudentConfigBean>();list = csvToBean.parse(strategy, csvReader);studentMap = new HashMap<Integer, StudentConfigBean>();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





0 0
原创粉丝点击