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

标签 java spring-boot csv

我正在尝试使用 Spring Boot Controller 将数据写入 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();
    }

我的 Controller 代码有错误吗?我应该检查哪个属性来了解数据是否正在写入文件?

提前致谢!

最佳答案

Do I have any mistakes in my controller code?

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

如果您检查 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 Controller 方法。

哦,而且不需要检查是否写入了某些内容。如果代码在 try block 结束后到达下一条语句,则说明已写入内容。现在这是有保证的,因为您不再忽略异常。

关于java - 如何使用Java检查数据是否写入csv文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57762502/

相关文章:

java - 对于快速变化的集合,CQEngine 中的索引惩罚是什么?

java - <标识符> 预期 - 有重大困难,编码新手

java - 如何解决java9中的模块读取包错误

java - 如何将Spring Boot应用程序指向外部jar的logback.xml

javascript - Python - 将 csv 文件转换为 JSON

r - 分隔符位于错误的位置

python - 随机化两个 csv 文件,但索引顺序相同

java - Class.forName(JDBC_DRIVER);当代码相同时,仅在我的 2 个程序中的 1 个中工作。为什么?

java - 在 exec() 中处理\n 和\t - Java

java - 找不到 MongoRepository (Spring Boot) 的 bean