我正在尝试使用 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/