/**
* 根据反射传入不同的List<T>动态生成日志文件
* @param list 数据集合
* @param writeTxtPath 日志文件生成路径
* @throws IllegalArgumentException
* @throws IllegalAccessException
* @throws FileNotFoundException
*/
public static <T> void writeTxtFile(List<T> list,String writeTxtPath) throws IllegalArgumentException, IllegalAccessException, FileNotFoundException {
if(list.size() == 0){
throw new RuntimeException("集合的个数为0");
}
PrintWriter pw = new PrintWriter(writeTxtPath);
//生成标题
StringBuffer sbTitle = new StringBuffer();
//生成每个javaBean的值
StringBuffer sbValue = new StringBuffer();
pw.println(list.size());
Class tClass = list.get(0).getClass();
//获得类名称(只含类名称不含包名)
String className = tClass.getSimpleName();
//获得所有的属性名称
Field[] fields = tClass.getDeclaredFields();
//获得该类中所有的方法名称(不包括父类)
Method[] methods = tClass.getDeclaredMethods();
for(Field field:fields){
Field.setAccessible(fields,true);
sbTitle.append(field.getName()+",");
}
pw.println(sbTitle.substring(0, sbTitle.length()-1));
sbTitle.setLength(0);
for(int i=0;i<list.size();i++){
//System.out.println("className:"+className);
//System.out.println("fields:"+fields.length);
for(Field field:fields){
//访问类中的私有属性时需要设置该属性
Field.setAccessible(fields, true);
//System.out.println("field:-- "+field.getName()+" ---value:---"+field.get(list.get(i)));
sbValue.append(field.get(list.get(i))+",");
}
pw.println(sbValue.substring(0, sbValue.length()-1));
sbValue.setLength(0);
}
pw.flush();
pw.close();
}
如此调用:
List<User> userList = new ArrayList<User>();
for(int i=0;i<10;i++){
User user = new User();
user.setName("carl"+i);
user.setPassword(""+i);
userList.add(user);
}
try {
writeTxtFile(userList,"d:\\1.txt");
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
}