use*_*890 11 .net robustness file-transfer atomicity
我正在构建一个使用System.IO.File.Copy(...)函数复制文件的服务器应用程序.我的文件可能相当大,因此,如果机器崩溃,它很有可能在复制期间发生.
重新启动服务后,我应该能够获取复制任务并继续.如何检测服务器崩溃是否成功完成或中断了副本?
我目前的计划是将文件复制到临时名称,复制完成后将其重命名为最终名称.这样,文件命名能够在崩溃时携带状态信息.
你有什么好的/更好的建议吗?
编辑:目标操作系统是Win2003,因此事务NTFS不可用
Pao*_*olo 10
其他人建议使用事务性NTFS,如果您在Vista或更高版本上部署,则可以.如果您需要支持XP(或更早版本),那么临时文件后跟移动(重命名)是最佳解决方案.
这个类似问题的答案提供了更多信息: File.Move的原子性
| 归档时间: |
|
| 查看次数: |
2811 次 |
| 最近记录: |