2011-08-17 101 views
0

网络连接“失败时”正在通过网络共享写入的文件会发生什么情况?我想象多种事情都可能发生。WriteFile失败模式

我问的原因是因为我写的一个程序似乎以一种我从未见过的方式破坏文件。实际上,我从来没有收到过我的程序创建一个损坏的文件的报告,我有信心如果它损坏了我会听到的一个文件。实际生成损坏文件的代码实际上是Microsoft代码。从MSXML4.0 COM组件在IXMLDOMDocument2接口上调用save函数时创建该文件。该函数创建了一个无效的XML文档。 33789字节文件的最后5452个字节填充了NULL(0x00)。我试图理解发生了什么。

+1

写入文件时网络连接失败。这还不够吗? –

+0

@Hans,你在说什么?你是否说网络连接失败时写入操作的行为是未定义的?通常,网络堆栈和/或网络服务具有某种容错性。 – Mike

+0

看起来像你的不。拿这到serverfault.com找出来,不要忘记仔细描述它。 –

回答

2

简短的回答是,文件可能会损坏(如你已经找到)。

从那里,几乎唯一有趣的问题是你如何防止再次发生。典型的方法是将数据写入临时文件,写入后将其重命名为正确的名称。如果网络连接中途死亡,您将无法获得正确的文件名。要恢复,请删除所有临时文件,然后从头重新开始操作。

+0

谢谢你的回答。我还发现下面的页面很有帮助。 http://blogs.msdn.com/b/adioltean/archive/2005/12/28/507866.aspx – Mike