我有一个文件,我正在复制到某个位置。以下是代码段 -
//Document Status = Pending
var triggerFileWriter = new StringWriter();
triggerFileWriter.WriteLine("Only for test");
System.IO.File.WriteAllText(fullTriggerFilename, triggerFileWriter.ToString());
triggerFileWriter.Dispose();
if (System.IO.File.Exists(fullTriggerFilename))
{
// Document Status = Processed
}
File.Exists
检查是否足以更新文件状态?
我不担心文件是否被复制并且文档状态未更新。由于计时器作业每10分钟运行一次,因此“待处理”项目将在下次运行时自动获取。
文件复制是否有可能被中断 - 这可能导致文件但实际上没有完全复制? 如果发生这种情况,我可以对我的代码进行哪些更改来解决。
谢谢!
答案 0 :(得分:1)
嗯,唯一可以确定的方法是将整个文件(逐字节)与您尝试编写的文件进行比较。当然,这并不是很便宜 - 无论如何你都可以轻易地覆盖文件。
在NTFS上,基本上删除了未正确“提交”的文件,因此File.Exists
很好。使用例如,可能不是这种情况。 FAT-32,或通过网络文件系统保存时。
在这种情况下,文件大小可能有所帮助 - 除非您事先预先分配文件(这对性能来说是一个很好的做法)。即使没有预先分配,文件也可以正确调整大小,但仍然缺少数据。
答案 1 :(得分:0)
答案 2 :(得分:0)
您正在调用File.WriteAllText
方法。这意味着您的工作将完成,否则您将获得例外。因此,您可以通过.NET I / O API获得该文件正确编写的保证。
但是你永远不会保证它存在于某些资源中。因此,您无需致电File.Exists
。只是不要依赖于此。一切都会发生。