解决:Java中I/O流输出数据不完整的问题
一·问题描述:
1.利用Java转换流去复制一个json文件内容到新json文件中时,新json文件末尾总是会少一些数据。(具体如图所示)
(1)Java源代码截图
(2)原json文件字符长度截图
(3)新json文件字符长度截图:比原json文件少了很多字符数据
二·问题原因:
1.最后一次缓存空间中的数据,没能成功写入到目标文件中去
三·解决办法:
1.在将缓存数组数据循环写入目标文件结束时,刷新一下缓存空间;即:在循环输出数据结束之后,关闭输出流之前,调用一下输出流的flush()方法
/**
* flush() 方法是清空,即清空缓冲区数据,就是说
* 你用读写流的时候,其实数据是先被读到了内存中,
* 然后用数据写到文件中,当你数据读完的时候不代表你的数据已经写完了,
* 因为还有一部分有可能留在内存这个缓冲区中.这时候如果你调用了
* close方法关闭了读写流,那么这部分数据就会丢失,
* 所以应该再关闭读写流之前先flush(),显得清空数据.
*/
(1)最终Java源代码如图所示
四·测试结果:成功
(1)新json文件字符长度与原json文件字符长度一致,且提示报错消失
(2)本次json文件长度都为47588
(3)数据结果被json格式解析成功
五·相关链接:
1.解决:Java中I/O流读取数据不完整的问题
https://blog.csdn.net/weixin_48033662/article/details/124701372