使用Netbeans写入csv文件不起作用

时间:2020-10-20 21:50:51

标签: java csv user-interface jbutton file-handling

我目前正在研究一个车辆云程序,该程序将获取客户信息并获取车主信息并将其存储在单独的.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);

-写入.csv文件代码

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();
    }

2 个答案:

答案 0 :(得分:0)

您既没有使用将数据写入文件的flush(),也没有使用先刷新然后关闭编写器的close()。通常,您应该始终关闭任何writer / stream / etc。您之前打开过的。

答案 1 :(得分:0)

字符串文件名是文件的路径。如果文件位于名为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();
        }
    }
}
相关问题