【问题标题】:How to check whether data is written in csv file using Java?如何使用Java检查数据是否写入csv文件?
【发布时间】:2020-01-05 19:39:28
【问题描述】:

我正在尝试使用 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();
    }

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

提前致谢!

【问题讨论】:

    标签: java spring-boot csv


    【解决方案1】:

    我的控制器代码有错误吗?

    是的

    你可怕的异常处理。不要捕获异常,然后继续进行,就好像没有出错一样。可能出了问题,而您却忽略了它。

    如果您检查 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 块结束后到达下一条语句,那么就写了一些东西。现在可以保证,因为您不再忽略异常。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-10-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-03-21
      • 2011-10-29
      • 1970-01-01
      相关资源
      最近更新 更多