接着上一篇,这次将给大家呈现完整的内容,还是那句话,直接上代码:
package com.test.common.utils.csv;
import com.google.common.collect.Lists;
import com.test.common.exception.base.ServiceException;
import com.test.common.utils.DateUtils;
import com.test.framework.aspectj.lang.annotation.CSV;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.csv.CSVFormat;
import org.apache.commons.csv.CSVPrinter;
import org.springframework.util.CollectionUtils;
import java.io.File;
import java.io.FileOutputStream;
import java.io.OutputStreamWriter;
import java.lang.reflect.Field;
import java.nio.charset.StandardCharsets;
import java.util.*;
import java.util.stream.Collectors;
@Slf4j
public class CsvUtil<T> {
private Class<T> clazz;
public CsvUtil() {
}
public CsvUtil(Class<T> clazz) {
this.clazz = clazz;
}
public Class<T> getClazz() {
return clazz;
}
public void setClazz(Class<T> clazz) {
this.clazz = clazz;
}
/**
* 获取所有注解字段
* @return
*/
public List<Field> getHeader() {
Class tempClass = this.clazz;
List<Field> allFields = Lists.newArrayList();
//获取父类上的fields,当父类为null的时候说明到达了最上层的父类(Object类).
while (tempClass != null) {
allFields.addAll