import org.supercsv.io.CsvBeanReader;
import org.supercsv.io.CsvBeanWriter;
import org.supercsv.prefs.CsvPreference;
public class Person {
private String name;
private int age;
}
public List<Person> readCSV(String filePath) {
try (Reader reader = new FileReader(filePath);
CsvBeanReader csvReader = new CsvBeanReader(reader, CsvPreference.STANDARD_PREFERENCE)) {
String[] header = csvReader.getHeader(true);
CellProcessor[] processors = new CellProcessor[] { new NotNull(), new ParseInt() };
List<Person> persons = new ArrayList<>();
Person person;
while ((person = csvReader.read(Person.class, header, processors)) != null) {
persons.add(person);
}
return persons;
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
public void writeCSV(String filePath, List<Person> persons) {
try (Writer writer = new FileWriter(filePath);
CsvBeanWriter csvWriter = new CsvBeanWriter(writer, CsvPreference.STANDARD_PREFERENCE)) {
String[] header = { "name", "age" };
CellProcessor[] processors = new CellProcessor[] { new NotNull(), new Optional() };
csvWriter.writeHeader(header);
for (Person person : persons) {
csvWriter.write(person, header, processors);
}
} catch (IOException e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
SuperCSVExample example = new SuperCSVExample();
List<Person> persons = example.readCSV("input.csv");
example.writeCSV("output.csv", persons);
}