如何检查是否使用Java将数据写入了csv文件?

时间:2019-09-02 20:41:14

标签: java spring-boot csv

我正在尝试使用Spring Boot控制器将数据写入CSV文件。但是数据没有写入文件。

我已经尝试了调试,但是找不到我应该寻找的属性。 调试时,我在Stream Encoder中注意到, isOpen = true,writebuffer = null,ch = null,haveLeftoverChar = false,leftoverChar ='\ u0000'0,lcb = null

我得到了我希望得到的数据,完全正确。

这是我的代码:

    FileWriter pw=null;
    try {
        pw = new FileWriter("C:\\Users\\hp\\Desktop\\all\\engine\\src\\main\\resources\\cases.csv", true);
    } catch (IOException e) {
        e.printStackTrace();
    }

    try {
        pw.write("Registration Number: " + studentCase.getRegistrationNumber());
    } catch (IOException e) {
        e.printStackTrace();
    }
    try {
        pw.flush();
        pw.close();
    } catch (IOException e) {
        e.printStackTrace();
    }

我的控制器代码是否有任何错误?以及应该检查哪个属性以了解数据是否正在写入文件?

谢谢!

1 个答案:

答案 0 :(得分:4)

  

我的控制器代码是否有任何错误?

您可怕的异常处理。如果没有问题,请不要捕获异常,然后继续进行。可能有问题,您将忽略它。

如果检查e.printStackTrace()调用的输出,您可能会看到,但您甚至不知道该输出在哪里?

此外,您应该使用try-with-resources。它是在Java 7中添加的,因此没有人可以编写这样的代码,而不使用它。

请注意,您无需调用flush(),因为close()方法将为您完成此操作。

所以尝试一下:

String filename = "C:\\Users\\hp\\Desktop\\all\\engine\\src\\main\\resources\\cases.csv";
try (FileWriter pw = new FileWriter(filename, true)) {
    pw.write("Registration Number: " + studentCase.getRegistrationNumber());
}

然后将throws IOException添加到Spring MVC控制器方法中。

哦,不需要检查是否写了东西。如果代码在try块结束之后到达了下一条语句,则说明已编写了一些内容。现在可以保证,因为您不再忽略异常。