编程乐趣:c#彻底删除文件

  


代码如下:


AbsoluteFile公共类   {   公共事件EventHandler FinishDeleteFileEvent=零;      公共事件EventHandler FinishDeleteFolderEvent=零;      公共事件EventHandler DeleteErrorEvent=零;      公共字符串ErrorString=string.Empty;      公共空间DoAbsoluteDeleteFile filePath(对象)   {   试一试   {   字符串文件名=filePath.ToString ();      如果(string.IsNullOrEmpty(文件名)   {   返回;   }      如果(File.Exists(文件名)   {   文件。SetAttributes(文件名,FileAttributes.Normal);      双=数学领域。天花板(新FileInfo(文件名)。长度/512.0);      byte [] dummyBuffer=新字节[512];      RNGCryptoServiceProvider rng=new RNGCryptoServiceProvider ();      inputStream=new FileStream文件流(文件名,FileMode.Open);      inputStream。位置=0;      for (int sectorsWritten=0;sectorsWritten & lt;行业;sectorsWritten + +)   {   rng.GetBytes (dummyBuffer);      inputStream。写(dummyBuffer 0 dummyBuffer.Length);      sectorsWritten + +;   }      inputStream.SetLength (0);      inputStream.Close ();      DateTime dt=new DateTime(2049年1 1 0,0,0);      文件。SetCreationTime(文件名,dt);      文件。SetLastAccessTime(文件名,dt);      文件。SetLastWriteTime(文件名,dt);      File.Delete(文件名);      WipeDone ();   }   }   捕获(异常e)   {   WipeError (e);   }   }      公共空间DoDeleteFolder(对象文件夹)   {   字符串folderPath=folder.ToString ();      如果(string.IsNullOrEmpty (folderPath))   {   返回;   }      DirectoryInfo直接=new DirectoryInfo (folderPath);      FileSystemInfo文件系统[]=direct.GetFileSystemInfos ();      如果文件系统(==null | |文件系统。长度==0)   {   direct.Delete ();   }   其他的   {   foreach (FileSystemInfo fileItem在文件系统)   {   如果(fileItem FileInfo)   {   this.DoAbsoluteDeleteFile (fileItem.FullName);   }   其他的   {   DoDeleteFolder (fileItem.FullName);   }   }   }      如果这一点。FinishDeleteFolderEvent !=null)   {   这一点。FinishDeleteFolderEvent(空);   }   }      私人空间WipeError(异常e)   {   如果(DeleteErrorEvent !=null)   {   ErrorString=e.Message;      DeleteErrorEvent(空);   }   }      私人空间WipeDone ()   {   如果(FinishDeleteFileEvent !=null)   {   FinishDeleteFileEvent(空);   }   }   }

编程乐趣:c#彻底删除文件“> <br/> <br/> <p> <br/> </p> <p> <br/> </p> <pre类=公共部分中类Form1:形式   {   私人线程dfileThread=零;      私人字符串fileObjectPath=string.Empty;      私人bool isFile=true;      公众委托无效DefaulEventDelegate(对象发送方,EventArgs e);      公共Form1 ()   {   InitializeComponent ();   }      私人空间btnSelectFile_Click(对象发送方,EventArgs e)   {   isFile=true;      这一点。openFileDialog1=new OpenFileDialog ();      openFileDialog1。多?true;      openFileDialog1。Title=扒胙≡裎募?      openFileDialog1。过滤器="所有文件(* . *)| * . *”;      如果(openFileDialog1.ShowDialog ()==DialogResult.OK)   {   this.txtFilePath。文本=openFileDialog1.FileName;   }      fileObjectPath=this.txtFilePath.Text.Trim ();   }      私人空间btnSelectFolder_Click(对象发送方,EventArgs e)   {   isFile=false;      这一点。folderBrowserDialog1=new FolderBrowserDialog ();      folderBrowserDialog1。描述="请选择文件路径”;      如果(folderBrowserDialog1.ShowDialog ()==DialogResult.OK)   {   this.txtFolder。文本=folderBrowserDialog1.SelectedPath;   }      fileObjectPath=this.txtFolder.Text.Trim ();   }      私人空间btnAbsoluteDelete_Click(对象发送方,EventArgs e)   {   this.lblHint。可见=true;      如果(string.IsNullOrEmpty (fileObjectPath))   {   MessageBox.Show(“请选择要粉碎的文件和文件夹!”);      返回;   }      AbsoluteFile dfile=new AbsoluteFile ();      dfile。DeleteErrorEvent +=new EventHandler (Dfile_DeleteErrorEvent);      如果(isFile)   {   dfile。FinishDeleteFileEvent +=new EventHandler (Dfile_FinishDeleteFileEvent);      dfileThread=新线程(新ParameterizedThreadStart (dfile.DoAbsoluteDeleteFile));      dfileThread。IsBackground=true;      dfileThread.Start (fileObjectPath);   }   其他的   {   dfile。FinishDeleteFolderEvent +=new EventHandler (Dfile_FinishDeleteFolderEvent);      dfileThread=新线程(新ParameterizedThreadStart (dfile.DoDeleteFolder));      dfileThread。IsBackground=true;      dfileThread.Start (fileObjectPath);   }      this.lblHint。文本=@”正在删除……”;   }      空白Dfile_DeleteErrorEvent(对象发送方,EventArgs e)   {   如果(! this.InvokeRequired)   {   对话框。表演(AbsoluteFile(发送方).ErrorString);   }   其他的   {   这一点。BeginInvoke(新DefaulEventDelegate (Dfile_DeleteErrorEvent),新对象[]{发送方,e});      }   }      空白Dfile_FinishDeleteFolderEvent(对象发送方,EventArgs e)   {   如果(! this.InvokeRequired)   {   this.lblHint。可见=false;      MessageBox.Show(“删除完毕!”);   }   其他的   {   这一点。BeginInvoke(新DefaulEventDelegate (Dfile_FinishDeleteFolderEvent),新对象[]{发送方,e});      }   }      空白Dfile_FinishDeleteFileEvent(对象发送方,EventArgs e)   {   如果(! this.InvokeRequired)   {   this.lblHint。可见=false;      MessageBox.Show(“删除完毕!”);   }   其他的   {   这一点。BeginInvoke(新DefaulEventDelegate (Dfile_FinishDeleteFileEvent),新对象[]{发送方,e});      }   }   }

编程乐趣:c#彻底删除文件