【发布时间】:2011-03-14 15:06:24
【问题描述】:
在应用程序关闭时,我想通过 Internet(使用 Indy)将文件发送到服务器。如果数据发送正常,我想从计算机中删除该文件。关键部分是我的文件不应该同时存储在两个地方(服务器、本地计算机)。
例如,我的应用程序可能会在将文件发送到服务器之后并在从本地磁盘删除文件之前意外停止。在这种情况下,文件将同时存在于这两个地方。
应用程序可能会因为以下原因停止:电源故障、Control+Alt+Del、操作系统关闭、用户关闭、系统挂起(可能还有其他原因我忘记了?)。
如何保证文件存储在一个地方?
我认为我们可以认为将文件写入磁盘是瞬时的,因为文件非常小。
【问题讨论】:
-
您为什么不假设它随时都可能死掉,而是担心确保保存到磁盘的数据的一致性按照设计得到照顾。这就是所谓的“交易”的意思。要么全部存储,要么都不存储。您可能遇到磁盘错误、电源问题或网络问题。你可能会遇到很多问题。你无法阻止它们,你只能尝试使你的设计健壮并明确地处理它们。
-
@Warren 在下面看到我的回答:即使电源出现故障,您也可以轻松地将文件缓冲区刷新到磁盘以强制执行 ACID 行为。
-
嗨沃伦。你能详细说明一下(或指向我一些特定的文档)吗?谢谢。
-
我在下面更新了我的答案。
标签: delphi