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:\\task_rule@201908.csv";
// 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());
}
}
}