首页 > 解决方案 > Java中断电时文本文件被清空并丢失所有数据

问题描述

我有一个应用程序可以访问选定的文件并读取其中的数据(在我的情况下为文本)并进行一些计算,然后更新文本并将其重写到文件中。

该应用程序在访问文件和重写文件方面工作得非常好,除了一种情况

情况是这样的:如果用户使用桌面并且如果用户触发了导致文件操作(读取和写入)的事件并且同时断电,那么在再次启动桌面后文件仍然存在但它没有其中的数据(完全清空)

请记住,这仅在使用台式机时发生(在笔记本电脑上不会发生),并且仅在断电前一瞬间触发文件操作时才会发生。

我想知道 java 中是否有任何解决方法来防止发生这种事情,我知道发生这种情况的可能性非常低,但它发生了,这就是我在这里的原因。

标签: javajava-io

解决方案


对此的经典解决方案是将更改的内容写入临时文件,然后将临时文件重命名为正确的名称。这样,中断 (a) 使临时文件为空且原始文件不受影响,或 (b) 导致临时文件不被重命名,而原始文件不受影响。


推荐阅读