Мне нужно написать код, который должен иметь возможность записывать столбец (массив значений String []) и заголовок этого столбца в файл CSV. Он должен записывать столбец в выходной файл .csv в обоих случаях, когда он не существует и когда уже есть файл с именем файла входных значений. Конечно, я хочу читать и писать в одном файле. Вот код:
public void afegir_columna_csv(String file, String header, String[] contingut) {
try {
FileWriter filewriter = new FileWriter(file, true);
CSVWriter csvWriter = new CSVWriter(filewriter);
FileReader filereader = new FileReader(file);
CSVReader csvReader = new CSVReader(filereader);
String head = header;
String[] values = contingut;
String[] entries = null;
//Adding the header part:
String[] H = csvReader.readNext();
ArrayList listH = new ArrayList(Arrays.asList(H));
listH.add(head);
csvWriter.writeNext((String[]) listH.toArray());
Añadimos los valores:
int i=0;
while((entries = csvReader.readNext()) != null) {
ArrayList list = new ArrayList(Arrays.asList(entries));
list.add(values[i]);
csvWriter.writeNext((String[]) list.toArray());
}
csvWriter.close();
}
catch(Exception e) {
e.printStackTrace();
}
}
Я тестировал код, и вот что происходит в обоих случаях: 1. Если файл существует, но пуст: он не записывает первый столбец. 2. Если файл уже существует и в нем есть столбцы: он выдает мне исключение приведения (где я cast (String []) list.toArray ()).
Есть идеи, как это правильно сделать? Спасибо!
Вот ошибка, которую я получаю при тестировании номер 2:
java.lang.ClassCastException: class [Ljava.lang.Object; cannot be cast to class [Ljava.lang.String; ([Ljava.lang.Object; and [Ljava.lang.String; are in module java.base of loader 'bootstrap')