java利用做的csv文件解析为list对象详解编程语言

import java.io.BufferedReader; 
 
import java.io.File; 
 
import java.io.FileReader; 
 
import java.lang.reflect.Field; 
 
import java.util.ArrayList; 
 
import java.util.List; 
 
public class ReadCsv { 
 
/** 
 
* 读取csv文件用list对象存储的公共调用方法 
 
* @param inpath csv文件存储路径 
 
* @return 返回List<taskRule>对象 
 
*/ 
 
public static List<taskRule> readCsv(String inpath) { 
 
List<taskRule> list = new ArrayList<taskRule>(); // 保存读取到的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>里 
 
taskRule infos = new taskRule(); 
 
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(); 
 
} 
 
return list; 
 
} 
 
/** 
 
* 读取csv文件用list对象存储的公共调用方法 
 
* @param inpath csv文件存储路径 
 
* @param obj 和csv文件对应的实体类 
 
* @return 返回List<Object>对象 
 
*/ 
 
public static List<Object> readCsv2(String inpath, Object obj) { 
 
List<Object> list = new ArrayList<Object>(); // 保存读取到的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<Object>里 
 
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(); 
 
} 
 
return list; 
 
} 
 
} 
 
 
 
import java.util.List; 
 
public class test { 
 
public static void main(String[] args) { //调用测试 
 
String inpath="D://[email protected]"; 
 
//    List<taskRule> list=ReadCsv.readCsv(inpath); //调用ReadCsv里的方法读取csv文件里的内容,返回对象是List<taskRule> 
 
//    for (taskRule rule : list) { // 输出 
 
//    System.out.println(rule.toString()); 
 
//    } 
 
taskRule taskrule = new taskRule(); 
 
List<Object> list2=ReadCsv.readCsv2(inpath,taskrule); //调用ReadCsv里的方法读取csv文件里的内容,返回对象是List<taskRule> 
 
for (Object rule : list2) { // 输出 
 
System.out.println(rule.toString()); 
 
} 
 
} 
 
}

原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/tech/pnotes/17855.html

(0)
上一篇 2021年7月19日 20:34
下一篇 2021年7月19日 20:34

相关推荐

发表回复

登录后才能评论