Я работаю с файлами JTable
и CSV, дело в том, что мне нужно сохранить данные, вставленные в таблицу, а затем снова открыть, если пользователь должен внести некоторые изменения. Пока я могу сохранять и загружать CSV-файл, созданный из таблицы, о которой я говорил, но объект BufferedWriter
добавляет запятую в конце каждой строки, что вызывает новый пустой столбец при загрузке существующего файла CSV.Как избежать/удалить запись последней запятой в строке?
Вот мой код, я пытался ограничить этот вопрос, но это было безуспешно.
if(jTable1.getModel()==this.m){
File file = new File(this.tfSelectedSpreadsheet.getText().toString());
if(file.exists() && !file.isDirectory()){
file.delete();
}
BufferedWriter bfw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(this.tfSelectedSpreadsheet.getText().toString()),"UTF-8"));
for(int i=0; i<jTable1.getColumnCount();i++){
bfw.append(jTable1.getColumnName(i));
if(i<jTable1.getColumnCount()) bfw.append(",");
else bfw.newLine();
}
bfw.newLine();
for(int i=0;i<jTable1.getRowCount();i++){
for(int j=0;j<jTable1.getColumnCount();j++){
bfw.append((String)jTable1.getValueAt(i,j));
if(j<jTable1.getColumnCount()) bfw.append(",");
bfw.newLine();
}
bfw.newLine();
}
bfw.close();
}
И это как файл CSV, порожденный этим кодом выглядит следующим образом:
Link,Long,Lat,CRS,
R011,120.1126,-33.5422,GDA94,
R014,120.1126,-33.5422,GDA94,
R019,120.1126,-33.5422,GDA94,
R011,120.1126,-33.5422,GDA94,
R011,120.1126,-33.5422,GDA94,
R011,120.1126,-33.5422,GDA94,
R015,120.1126,-33.5422,GDA94,
R014,120.1126,-33.5422,GDA94,
WANDA,25.12.1990,-37.0991,GDA90,
Что я могу сделать, чтобы исправить это «запятая» проблема?
Это распространенная проблема, и я не знаю «умного» решения. Вы должны вставить тест где-нибудь в цикле (или развернуть цикл на одну итерацию). –