我的应用程序不断地将大量字节写入文件.如果我的代码块正在写出字节并且如果与驱动器或网络的连接丢失则获得IOException,我怎么知道它写了多少字节?
例如,我一次写2500个字节,如果发生IOException,是否意味着它没有写入文件,或者它会将部分字节写入文件?如果将部分字节写入文件,我怎么知道写了多少
仅供参考我正在使用
DataOutputStream
Run Code Online (Sandbox Code Playgroud)
写出文件.我的应用程序关闭时才刷新.
你不能,IOException可以随时发生.如果你考虑一下,IOException可能是由软件或硬件故障引起的,在写入第一个字节之前,写完所有内容之后发生了连接 - 或者如果数据块很大的话.
重新连接后,您必须检查文件大小或使用其他一些技术使文件保持一致状态并恢复.最简单的安全网:在写入数据之前读取文件大小并可靠地存储,写入数据并在写入后读取文件大小.如果发生错误且当前文件大小不等于预期文件大小(上次保存),则截断额外字节并重试.
阅读关系数据库中的事务日志,了解有多大和可靠的软件处理此类案例.