c#プログラムが占有するファイルを削除して、強力にファイルを削除して、徹底的にファイルを削除して、ファイルの占有を解除します

2305 ワード

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)
            {
            }
        }