c# 刪除程序占用的文件,清理刪除文件,徹底刪除文件,解除文件占用
文件打開時,以共享讀寫模式打開
FileStream inputStream = new FileStream(name, FileMode.Open, FileAccess.Read, FileShare.ReadWrite);
p.BackgroundImage = new Bitmap(inputStream);
inputStream.Dispose();
//刪除文件
public void WipeFile(string filename, int timesToWrite)
{
try
{
if (File.Exists(filename))
{
//設置文件的屬性為正常,這是為了防止文件是只讀
File.SetAttributes(filename, FileAttributes.Normal);
//計算扇區數目
double sectors = Math.Ceiling(new FileInfo(filename).Length / 512.0);
// 創建一個同樣大小的虛擬緩存
byte[] dummyBuffer = new byte[512];
// 創建一個加密隨機數目生成器
RNGCryptoServiceProvider rng = new RNGCryptoServiceProvider();
// 打開這個文件的FileStream
FileStream inputStream = new FileStream(filename, FileMode.Open, FileAccess.Write, FileShare.ReadWrite);
for (int currentPass = 0; currentPass < timesToWrite; currentPass++)
{
// 文件流位置
inputStream.Position = 0;
//循環所有的扇區
for (int sectorsWritten = 0; sectorsWritten < sectors; sectorsWritten++)
{
//把垃圾數據填充到流中
rng.GetBytes(dummyBuffer);
// 寫入文件流中
inputStream.Write(dummyBuffer, 0, dummyBuffer.Length);
}
}
// 清空文件
inputStream.SetLength(0);
// 關閉文件流
inputStream.Close();
// 清空原始日期需要
DateTime dt = new DateTime(2037, 1, 1, 0, 0, 0);
File.SetCreationTime(filename, dt);
File.SetLastAccessTime(filename, dt);
File.SetLastWriteTime(filename, dt);
// 刪除文件
File.Delete(filename);
}
}
catch (Exception)
{
}
}
轉載自http://blog.csdn.net/pigkeli/article/details/28877279?utm_source=tuicool
