importjava.io.BufferedReader;importjava.io.File;importjava.io.FileReader;importjava.lang.reflect.Field;importjava.util.ArrayList;importjava.util.List;public classReadCsv {/*** 读取csv文件用list对象存储的公共调用方法
*@paraminpath csv文件存储路径
*@return返回List对象*/
public static ListreadCsv(String inpath) {
List list = new ArrayList(); //保存读取到的CSV数据
try{
File file= new File(inpath); //判断文件是否存在
if (!file.exists()) {
System.out.println("文件不存在!");
}else{
System.out.println("文件存在!");
BufferedReader reader= new BufferedReader(new FileReader(inpath)); //读取CSV文件
String line= null;//循环读取每行
while ((line = reader.readLine()) != null) {
String[] row= line.split("\\|", -1); //分隔字符串(这里用到转义),存储到List里
taskRule infos= newtaskRule();
infos.setCateory(row[0]);
infos.setDescribe(row[1]);
infos.setName(row[2]);
infos.setRule(row[3]);
infos.setCreattime(row[4]);
infos.setSize(row[5]);
list.add(infos);
}
}
}catch(Exception e) {
e.printStackTrace();
}returnlist;
}/*** 读取csv文件用list对象存储的公共调用方法
*@paraminpath csv文件存储路径
*@paramobj 和csv文件对应的实体类
*@return返回List对象*/
public static ListreadCsv2(String inpath, Object obj) {
List list = new ArrayList(); //保存读取到的CSV数据
try{
File file= new File(inpath); //判断文件是否存在
if (!file.exists()) {
System.out.println("文件不存在!");
}else{
System.out.println("文件存在!");
BufferedReader reader= new BufferedReader(new FileReader(inpath)); //读取CSV文件
String line= null; //循环读取每行
while ((line = reader.readLine()) != null) {
String[] row= line.split("\\|", -1); //分隔字符串(这里用到转义),存储到List里
Class clazz= obj.getClass(); //通过反射获取运行时类
Object infos= clazz.newInstance(); //创建运行时类的对象
Field[] fs= infos.getClass().getDeclaredFields(); //得到类中的所有属性集合
for (int i = 0; i < fs.length; i++) {
Field f=fs[i];
f.setAccessible(true); //设置这些属性值是可以访问的
String type= f.getType().toString(); //得到此属性的类型
if (type.endsWith("String")) {
f.set(infos, row[i]);//给属性赋值
}
}
list.add(infos);
}
}
}catch(Exception e) {
e.printStackTrace();
}returnlist;
}
}importjava.util.List;public classtest {public static void main(String[] args) { //调用测试
String inpath="D:\\task_rule@201908.csv";//List list=ReadCsv.readCsv(inpath);//调用ReadCsv里的方法读取csv文件里的内容,返回对象是List//for (taskRule rule : list) {//输出//System.out.println(rule.toString());//}
taskRule taskrule= newtaskRule();
List list2=ReadCsv.readCsv2(inpath,taskrule); //调用ReadCsv里的方法读取csv文件里的内容,返回对象是List
for (Object rule : list2) { //输出
System.out.println(rule.toString());
}
}
}