c# 刪除程式佔用的檔案,強力刪除檔案,徹底刪除檔案,解除檔案佔用
阿新 • • 發佈:2019-02-12
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) { } }