3

我正在用 .Net C# 编写一个简单的应用程序,它将 ZIP 文件上传到中央服务器进行处理。

但是,此应用程序将使用它的环境容易受到频繁断电的影响。

我目前正在使用 File.ReadAllBytes 读取文件,并通过将生成的字节数组传递给 WebClient.UploadData 进行上传。

假设断电中断了对 ReadAllBytes 的调用,是否会发生文件损坏以及如何最好地处理这种可能性?

谢谢,

罗伯托

4

1 回答 1

2

如果断电中断读数,读数当然会中止。我不明白这部分问题。你应该关心写作

这里有两种写入可能出错:

  1. 将 ZIP 写入磁盘。如果被打断,你会得到一个部分文件。您可以通过首先将 ZIP 写入临时文件,然后仅在完成后重命名它来确保安全。您还必须在重命名之前插入 a Flush。重命名在 NTFS 上是原子的并且是安全的。
  2. 通过网络写入服务器。您可以通过首先提交预期的文件长度(或哈希)来确保安全。服务器必须验证该长度以确保传输完成。

如果使用这些方法检测到任何类型的错误,您需要重新启动该过程。

于 2013-10-13T12:50:49.073 回答