Я добавляю данные в последнюю строку csv. Я хотел удалить существующую строку, а затем переписать ее с добавленным элементом. Есть ли способ удалить строку в csv? Я использую opencsv для чтения и записи файла. Я попытался использовать класс CSVIterator. Однако, похоже, что итератор не поддерживает операцию remove(). Вот код, который я попробовал:удалить строку в файле csv
static String[] readLastRecord(File outputCSVFile) throws WAGException {
checkArgument(outputCSVFile != null, "Output CSV file cannot be null");
FileReader fileReader = null;
CSVReader csvFileReader = null;
CSVIterator csvIterator = null;
String[] csvLastRecord = null;
try {
fileReader = new FileReader(outputCSVFile);
csvFileReader = new CSVReader(fileReader, ',', '\'',
csvRowCount - 1);
csvIterator = new CSVIterator(csvFileReader);
while (csvIterator.hasNext()) {
csvLastRecord = csvIterator.next();
csvIterator.remove();
}
} catch (IOException ioEx) {
throw new WAGException(
WAGInputExceptionMessage.FILE_READ_ERR.getMessage());
} finally {
try {
if (csvFileReader != null)
csvFileReader.close();
} catch (IOException ioEx) {
throw new WAGException(
WAGInputExceptionMessage.FILE_CLOSE_ERR.getMessage());
}
}
return csvLastRecord;
}
В API говорит, что 'удалить()' * это * поддерживается итератора: HTTP: //opencsv.sourceforge.net/apidocs/, когда вы пишете «кажется, что итератор не поддерживает операцию remove()», вы должны предоставить более подробную информацию: он не компилируется? он компилируется, но не запускается? он работает, но не делает того, что вы хотите, чтобы он делал? – alfasin
Реализация на sourceforge.net говорит, что он не поддерживается .. Это итератор только для чтения. http://sourceforge.net/p/opencsv/source/ci/3ba1873ef55b014893cae73b015d2bcb55b7d5a4/tree/src/main/java/au/com/bytecode/opencsv/CSVIterator.java – user3453784
В этом случае вам нужно будет прочитать все строк в структуру данных (список может быть достаточно хорош), удалите нужную строку и переопределите (перепишите) файл. – alfasin