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


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<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





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值