1

假设写操作中途抛出异常。文件中是否写入了任何数据,或者文件中没有写入数据?

4

2 回答 2

1

由于您不了解 CFile 的内部结构(或者不应该,如果它被正确封装),您需要依赖 API 的“合同”。换句话说,除非文档具体告诉您在某些情况下会发生什么,否则您不能依赖它。

即使您有源代码并且可以弄清楚,API 规范就是合同,任何未指定的内容都可能随时更改。这就是为什么一些软件开发人员对发布内部内容持谨慎态度的原因之一,因为这样可以看出他们将他们锁定为永远支持这一点。

如果您真的想确保您的文件在异常发生后处于已知状态,则需要围绕该行为编写代码。这可能是这样的:

  • 在程序启动时备份文件(简单);或者
  • 在每次保存操作之前备份它(仍然相对简单);或者
  • 在任何写操作(复杂且缓慢)之前备份它。
于 2008-12-01T03:22:55.307 回答
0

简短的回答:很可能一些数据将被写入文件,除非磁盘在写入操作开始时已满。

更长的答案:这将取决于从 Write 调用中抛出的 CFileException 。

http://msdn.microsoft.com/en-us/library/as5cs056(VS.80).aspx

于 2008-12-01T03:11:40.010 回答