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

2014-11-24 03:26:36 · 作者: · 浏览: 0


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