问题描述
我目前正在研究一个车辆云程序,该程序将获取客户信息并获取车主信息并将其存储在单独的.csv文件中。我正在使用数组来分隔每个对象,从而更轻松地将其放入csv文件中,但是问题是,当我在程序中运行时,它会执行但不会写入文件。我使用提交按钮将信息存储在数组中,以便以后在写入文件时使用。我尝试过不使用文件的直接路径,例如ex。(“ ownerLog.csv”)
-SubmitButton代码
private void submit2ActionPerformed(java.awt.event.ActionEvent evt) {
String timeStamp = new SimpleDateFormat("yyyy.MM.dd.HH.mm.ss").format(new Date());
String[] tempArr = {OID.getText(),VModel.getText(),(String)Vehcolors.getSelectedItem(),vplate.getText(),(String)Rday.getSelectedItem(),(String)RMonths.getSelectedItem(),timeStamp};
//adding the temporary data array to the total client entries for file writing at later point
ownerEntries.add(tempArr);
try {
try (FileWriter csvWriter = new FileWriter("C:\\Users\\juals\\Documents\\NetBeansprojects\\GUIFormExamples\\src\\ownerLog.csv")) {
csvWriter.append("Owner id");
csvWriter.append(",");
csvWriter.append("Vehicle Model");
csvWriter.append(",");
csvWriter.append("Vehicle Color");
csvWriter.append(",");
csvWriter.append("Vehicle Plate Number");
csvWriter.append(",");
csvWriter.append("Approx. Residency Days");
csvWriter.append(",");
csvWriter.append("Approx Residency Months");
csvWriter.append(",");
csvWriter.append("Timestamp");
csvWriter.append("\n");
for(String[] entry: ownerEntries) {
System.out.println(String.join(",",entry));
csvWriter.append(String.join(",entry));
csvWriter.append("\n");
}
}
} catch (IOException e) {
e.printstacktrace();
}
解决方法
您既没有使用将数据写入文件的flush(),也没有使用先刷新然后关闭编写器的close()。通常,您应该始终关闭任何writer / stream / etc。您之前打开过的。
,字符串文件名是文件的路径。如果文件位于名为resources的文件夹中,则示例可能为“ resources / data.csv”。在您的情况下,可能是“ src / data.csv”。这是一些示例代码:
PrintWriter out; // a field
public void writeCsvFile(String filename) {
out = null;
try {
File file = new File(filename);
//System.out.println(file.getAbsolutePath());
FileWriter csvWriter = new FileWriter(file,true);
out = new PrintWriter(csvWriter);
out.append("\n");
// Appending to CSV file
out.append("Owner id");
out.append(",");
out.append("Vehicle Model");
out.append(",");
out.append("Vehicle Color");
out.append(",");
out.append("Vehicle Plate Number");
out.append(",");
out.append("Approx. Residency Days");
out.append(",");
out.append("Approx Residency Months");
out.append(",");
out.append("Timestamp");
out.append("\n");
for(String[] entry: ownerEntries) {
System.out.println(String.join(",",entry));
out.append(String.join(",entry));
}
out.flush();
} catch (Exception e) {
e.printStackTrace();
} finally {
if(out != null) {
out.close();
}
}
}
这是一个最小的示例:
PrintWriter out; // a field
public void writeCsvFile(String filename) {
out = null;
try {
File file = new File(filename);
//System.out.println(file.getAbsolutePath());
FileWriter csvWriter = new FileWriter(file,true);
out = new PrintWriter(csvWriter);
// Appending to CSV file
out.append("First value");
out.append(",");
out.append("Second value");
out.append(",");
out.append("Third value");
out.flush();
} catch (Exception e) {
e.printStackTrace();
} finally {
if(out != null) {
out.close();
}
}
}