如何确保在调用File.Delete("XXX")之前对XXX的写入操作已经结束
今天尝试写了一个文件粉碎的小程序。先用0对文件填充,再用1对文件填充,最后删除此文件。但是在具体操作的时候遇到一些问题——程序执行结束后,用FinalData等恢复软件将被删除文件恢复出来,结果发现很多文件都是在没有被填充完整的情况下就删掉了。特别一些1K左右的文件,更是未被填充就直接删除了;容量大些的文件略好点,文件大部分已填充。但即使是那些被填充一部分的文件,似乎填充也有问题,在0未填充完成的情况下就已经开始填充1了。
这似乎显示,程序在执行时,对文件写入未结束,就已经调用File.Delete()将文件删除了,而且文件的写入也不是顺序执行的。
FileStream fS = new FileStream(Path.Combine(filePath, fileName),
FileMode.Open, FileAccess.Write, FileShare.None);
while (fS.Position < fS.Length)
{
fS.WriteByte(0xFF);
}
fS.Flush();
fS.Close();
File.Delete(Path.Combine(filePath, fileName));
后来注释了最后一句File.Delete(),再次执行,并用支持16进制操作文件编辑器打开,证明文件确实能够被填充。
不知这个问题该如何解决。