当我创建文件并写入查询时,它仅写入一次吗?为什么?
for (spinelliIndex = 0; spinelliIndex < spinelli.getVeicoli_id().size(); spinelliIndex++) {
boolean match = false;
for (veicoloIndex = 0; veicoloIndex < veicoloDb.getVeicoloId().size(); veicoloIndex++) {
if (spinelli.getVeicoli_targa().get(spinelliIndex).equals(veicoloDb.getTarga().get(veicoloIndex))) {
match = true;
// Stampa a Video
System.out.println(spinelli.getVeicoli_targa().get(spinelliIndex) + " = "
+ veicoloDb.getTarga().get(veicoloIndex) + " --> "
+ spinelli.getVeicoli_id().get(spinelliIndex) + " --> "
+ veicoloDb.getVeicoloId().get(veicoloIndex));
// Scrivi nella riga i
row = sheet.getRow(spinelliIndex);
// Scrivi nella colonna AC indice 28
cell = row.createCell(28);
// Scrivi il ciclo in tutte le righe nella colonna AC indice 28
sheet.getRow(spinelliIndex).createCell(28)
.setCellValue(spinelli.getVeicoli_id().get(spinelliIndex));
FileOutputStream fos = new FileOutputStream(filePath);
// Scrivi nel file EXCEL
wb.write(fos);
fos.close();
// Scrivi NEl file .txt
// Crea la Query e scrivi nel file
file = new File(path);
fw = new FileWriter(file);
fw.write("UPDATE veicolo SET ID = " + "'" + spinelli.getVeicolo_newid().get(spinelliIndex) + "'" + ","
+ "CREATE_DATE = " + "'" + veicoloDb.getCreate_date().get(veicoloIndex) + "'" + ","
+ "MODIFIED_DATE = " + "'" + veicoloDb.getModified_date().get(veicoloIndex) + "'" + "," + "UUID = "
+ "'" + veicoloDb.getUuid().get(veicoloIndex) + "'" + "," + "CLASSE_EURO = " + "'"
+ veicoloDb.getClasse_euro().get(veicoloIndex) + "'" + "," + "CODICE_CLIENTE_ORIGINARIO = " + "'"
+ veicoloDb.getCodice_cliente_originario().get(veicoloIndex) + "'" + "," + "CONTRATTO = " + "'"
+ veicoloDb.getContratto().get(veicoloIndex) + "'" + "," + "DATA_FINE_VALIDITA = " + "'"
+ veicoloDb.getData_fine_validita().get(veicoloIndex) + "'" + "," + "DATA_INIZIO_VALIDITA = " + "'"
+ veicoloDb.getData_inizio_validita().get(veicoloIndex) + "'" + "," + "DISPONIBILITA = " + "'"
+ veicoloDb.getDisponibilita().get(veicoloIndex) + "'" + "," + "NAZIONE = " + "'"
+ veicoloDb.getNazione().get(veicoloIndex) + "'" + "," + "TARGA = " + "'" + veicoloDb.getTarga().get(veicoloIndex)
+ "'" + "," + "TIPO_DI_POSSESSO = " + "'" + veicoloDb.getTipo_di_possesso().get(veicoloIndex) + "'"
+ "," + "ID_ANAGRAFICA = " + "'" + veicoloDb.getId_anagrafica().get(veicoloIndex) + "'"
+ "FROM DISPOSITIVO_VEICOLO WHERE dispositivo_veicolo.id_anagrafica = veicolo.id_anagrafica"
+ ";" + "\n");
fw.flush();
fw.close();
}
}
// Targhe non trovate
if (!match) {
System.out.println("Targa non trovata: " + spinelli.getVeicoli_targa().get(spinelliIndex));
}
}
}
答案 0 :(得分:0)
我不确定您在程序上的预期行为是什么,但是我想您想多次写入(附加)文件,对吗?
在您的代码中,创建新文件(new File()
)并在循环中关闭编写器(fw.close()
)。
看起来,该程序多次覆盖了同一文件。
因此,如果要追加(而不是覆盖),建议您将文件创建和文件关闭放在循环的外部,如下所示(虚拟代码):
file = new File(path);
fw = new FileWriter(file);
for (spinelliIndex = 0; spinelliIndex < spinelli.getVeicoli_id().size(); spinelliIndex++) {
fw.write("something");
}
fw.close();
此外,fw.close()
将呼叫fw.flush()
。如果没有任何特定原因要编写,可以将其删除。