В примере в этой статье описывается, как экспортировать файлы CSV с использованием универсальных шаблонов и отражения Java. Поделитесь этим со всеми для справки. Подробности следующие:
В проекте необходимо экспортировать данные в файл CSV, поскольку разные классы имеют разные атрибуты. Чтобы упростить код, я применил дженерики и рефлексию Java и написал функцию для завершения функции экспорта.
Скопируйте код следующим образом: public <T> void saveFile(List<T> list, String outFile) бросает IOException {
if (list == null || list.isEmpty()) {
возвращаться;
}
если (StringUtils.isEmpty(outFile)) {
throw new IllegalArgumentException («выходной файл имеет значение null»);
}
логическое значение isFirst = true;
BufferedWriter out = null;
пытаться {
out = новый BufferedWriter (новый FileWriter (outFile));
для (T t : список) {
StringBuilder sb1 = новый StringBuilder();
StringBuilder sb2 = новый StringBuilder();
Класс clazz = (Класс) t.getClass();
Поле [] fs = clazz.getDeclaredFields();
for (int i = 0; i <fs.length; i++) {
Поле f = fs[i];
f.setAccessible(истина);
пытаться {
если (isFirst) {
sb1.append(f.getName());
sb1.append(",");
}
Объект val = f.get(t);
если (значение == ноль) {
sb2.append("");
} еще {
sb2.append(val.toString());
}
sb2.append(",");
} catch (IllegalArgumentException | IllegalAccessException e) {
е.printStackTrace();
}
}
если (isFirst) {
out.write(sb1.toString());
isFirst = ложь;
out.newLine();
}
out.write(sb2.toString());
out.newLine();
}
} поймать (IOException e1) {
бросить e1;
} окончательно {
пытаться {
если (выход != ноль) {
выход.закрыть();
}
} поймать (IOException e2) {
бросить e2;
}
}
}
Я надеюсь, что эта статья будет полезна каждому, кто занимается программированием на Java.