我正在编写一个加密程序,很有趣。我偶然发现了一个问题,即使使用FileStream
打开已删除的文件并将其写入一堆随机字节也不会删除已删除的文件。
但是我程序的当前实现是创建一个新的临时文件,以便将加密/解密的数据写入其中,以节省RAM。我现在想知道是否确实存在相同的问题,即使我不终止文件创建后就存在的FileStream
对象也是如此。
因此,如果我只是将流位置设置回零并覆盖每个字节,它是否真的写入与开头相同的位置,还是临时文件的一部分可以生存?如果是这样,我可以使用任何解决方法吗?
我目前的做法:
var fileStream = new FileStream(path, FileMode.Create);
fileStream.Write(//possible decrypted data);
fileStream.Position = 0;
byte[] bytes = RandomBytes();
long amount = (fileStream.Length / bytes.Length + 1);
for (long i = 0; i < amount; i++)
{
fileStream.Write(bytes, 0, bytes.Length);
}
string name = fileStream.Name;
fileStream.Close();
File.Delete(name);