CSV = "Значения, разделенные запятыми".Вы можете создать самостоятельно CSV-файл.Вы можете записать в файл значения, разделенные запятой (или точкой с запятой).эти значения являются ячейками одного ряда.строка заканчивается, когда вы пишете разделитель строк.
hier - это простой и простой пример того, как писать строки в формате csv:
public static final char CSV_SEPARATOR = ';'; // it could be a comma or a semi colon
try (BufferedWriter writer = new BufferedWriter(new FileWriter("my_file.csv"))) {
personList.forEach(person -> {
writer.append(person.getName()).append(CSV_SEPARATOR)
.append(person.getAge()).append(CSV_SEPARATOR)
.append(persone.getAddress().getStreet()).append(CSV_SEPARATOR)
.append(persone.getAddress().getpostCode()).append(CSV_SEPARATOR)
.append(persone.getAddress().getCity()).append(CSV_SEPARATOR)
.append(persone.getAddress().getCountry()).append(System.lineSeparator());
});
} catch (IOException ex) {
ex.printStackTrace();
}
, но для вашего случая я быопределить интерфейс CsvPrintable
public interface CsvPrintable {
String printCsv();
}
затем классы Person и Address реализуют этот интерфейс
class Person implements CsvPrintable {
String name;
int age;
Address address;
@Override
printCsv() {
return StringBuilder().append(name).append(CSV_SEPARATOR)
.append(age).append(CSV_SEPARATOR)
.append(address.printCsv()).toString();
}
}
Вы должны сделать то же самое с Address.
тогда мы сможем улучшитьпервый кодовый блок:
personList.forEach(person -> {
writer.append(person.printCsv()).append((System.lineSeparator());
});