今天尝试写了一个文件粉碎的小程序。先用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进制操作文件编辑器打开,证明文件确实能够被填充。
不知这个问题该如何解决。
这似乎显示,程序在执行时,对文件写入未结束,就已经调用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进制操作文件编辑器打开,证明文件确实能够被填充。
不知这个问题该如何解决。
解决方案 »
- C#数据库的var怎么用??
- 要写一个登录sql server 的窗口,需要一个combobox中提供目前可以连接的数据库,请问如何获取这个信息? 50分求助
- 关于C#函数的编写的一些问题。
- 用C#如何获得鼠标空闲,请大侠帮忙!
- .net不是开源了吗,要怎么才能看到.net框架类库的源代码?
- 求助:C# 如何获取网页“复选框”并选中,然后“提交”
- VS下将Webbrowser控件放入form下导致的问题
- 请问OracleDataReader这个类的属性问题..有经验请进..
- 加急!!远程的在web服务器上建立虚拟目录并可以对其进行删除等操作!!up有分!
- 关于不同解决方案的base64反序列化
- 100分求c#控制图片对比度的算法
- 急求JS代码!!!(TreeView相关)
另外,写文件时文件确实不应该被删除。但是一个奇怪的问题是,如果我运行注释了Delete()的程序,接着手动删除此文件,那么用FinalData等程序打开,文件内容显示都是填充了“0xFF”的。但如果不注释Delete(),那被删除文件的内容就大概分3部分,文件开头部分全是"0xFF"(第二次填充的内容),中间部分"0x00"(第一次填充的内容),文件结尾部分一般是文件原始内容。