经常用360的文件粉碎,删除隐私文件貌似还不错的。不过C#也可以实现彻底删除文件。试了下用360文件恢复恢复不了源文件了。

代码如下:

 public class AbsoluteFile{public event EventHandler FinishDeleteFileEvent = null;public event EventHandler FinishDeleteFolderEvent = null;public event EventHandler DeleteErrorEvent = null;public string ErrorString = string.Empty;public void DoAbsoluteDeleteFile(object filePath){try{string filename = filePath.ToString();if (string.IsNullOrEmpty(filename)){return;}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 inputStream = new FileStream(filename, FileMode.Open);inputStream.Position = 0;for (int sectorsWritten = 0; sectorsWritten < sectors; sectorsWritten++){rng.GetBytes(dummyBuffer);inputStream.Write(dummyBuffer, 0, dummyBuffer.Length);sectorsWritten++;}inputStream.SetLength(0);inputStream.Close();DateTime dt = new DateTime(2049, 1, 1, 0, 0, 0);File.SetCreationTime(filename, dt);File.SetLastAccessTime(filename, dt);File.SetLastWriteTime(filename, dt);File.Delete(filename);WipeDone();}}catch (Exception e){WipeError(e);}}public void DoDeleteFolder(object folder){string folderPath = folder.ToString();if (string.IsNullOrEmpty(folderPath)){return;}DirectoryInfo direct = new DirectoryInfo(folderPath);FileSystemInfo[] filesystem = direct.GetFileSystemInfos();if (filesystem == null || filesystem.Length == 0){direct.Delete();}else{foreach (FileSystemInfo fileItem in filesystem){if (fileItem is FileInfo){this.DoAbsoluteDeleteFile(fileItem.FullName);}else{DoDeleteFolder(fileItem.FullName);}}}if (this.FinishDeleteFolderEvent != null){this.FinishDeleteFolderEvent(this, null);}}private void WipeError(Exception e){if (DeleteErrorEvent != null){ErrorString = e.Message;DeleteErrorEvent(this, null);}}private void WipeDone(){if (FinishDeleteFileEvent != null){FinishDeleteFileEvent(this, null);}}}

顺便写了个简单的界面:

后台:

 public partial class Form1 : Form{private Thread dfileThread = null;private string fileObjectPath = string.Empty;private bool isFile = true;public delegate void DefaulEventDelegate(object sender, EventArgs e);public Form1(){InitializeComponent();}private void btnSelectFile_Click(object sender, EventArgs e){isFile = true;this.openFileDialog1 = new OpenFileDialog();openFileDialog1.Multiselect = true;openFileDialog1.Title = "请选择文件";openFileDialog1.Filter = "所有文件(*.*)|*.*";if (openFileDialog1.ShowDialog() == DialogResult.OK){this.txtFilePath.Text = openFileDialog1.FileName;}fileObjectPath = this.txtFilePath.Text.Trim();}private void btnSelectFolder_Click(object sender, EventArgs e){isFile = false;this.folderBrowserDialog1  = new FolderBrowserDialog();folderBrowserDialog1.Description = "请选择文件路径";if (folderBrowserDialog1.ShowDialog() == DialogResult.OK){this.txtFolder.Text = folderBrowserDialog1.SelectedPath;}fileObjectPath = this.txtFolder.Text.Trim();}private void btnAbsoluteDelete_Click(object sender, EventArgs e){this.lblHint.Visible = true;if(string.IsNullOrEmpty(fileObjectPath)){MessageBox.Show("请选择要粉碎的文件和文件夹!");return;}AbsoluteFile dfile = new AbsoluteFile();dfile.DeleteErrorEvent += new EventHandler(Dfile_DeleteErrorEvent);if (isFile){dfile.FinishDeleteFileEvent += new EventHandler(Dfile_FinishDeleteFileEvent);dfileThread = new Thread(new ParameterizedThreadStart(dfile.DoAbsoluteDeleteFile));dfileThread.IsBackground = true;dfileThread.Start(fileObjectPath);}else{dfile.FinishDeleteFolderEvent += new EventHandler(Dfile_FinishDeleteFolderEvent);dfileThread = new Thread(new ParameterizedThreadStart(dfile.DoDeleteFolder));dfileThread.IsBackground = true;dfileThread.Start(fileObjectPath);}this.lblHint.Text = @"正在删除...";}void Dfile_DeleteErrorEvent(object sender, EventArgs e){if (!this.InvokeRequired){MessageBox.Show((sender as AbsoluteFile).ErrorString);}else{this.BeginInvoke(new DefaulEventDelegate(Dfile_DeleteErrorEvent), new object[] { sender, e });}}void Dfile_FinishDeleteFolderEvent(object sender, EventArgs e){if (!this.InvokeRequired){this.lblHint.Visible = false;MessageBox.Show("删除完毕!");}else{this.BeginInvoke(new DefaulEventDelegate(Dfile_FinishDeleteFolderEvent),new object[] { sender,e });}}void Dfile_FinishDeleteFileEvent(object sender, EventArgs e){if (!this.InvokeRequired){this.lblHint.Visible = false;MessageBox.Show("删除完毕!");}else{this.BeginInvoke(new DefaulEventDelegate(Dfile_FinishDeleteFileEvent), new object[] { sender, e });}}}

下载:http://download.csdn.net/detail/yysyangyangyangshan/6860431

编程乐趣:C#彻底删除文件相关推荐

  1. file数组 删除文件_java编程IO基础之一:File类

    在整个java.io包中,File类是唯一的一个与文件本身操作有关的类,既可以执行文件的创建.删除.重命名,取得文件大小和修改日期. File的构造函数: public File(String pat ...

  2. shell 编程基础——删除文件而不删除文件夹

    最好的学习方法,莫过于从实践中学习. 首先需要区分文件和文件夹,需要使用 find 命令加 -type f 的参数,找出文件下下的所有文件.其次再通过rm -rf 的命令删除文件.我首先想到的是这样子 ...

  3. rm 空间不释放_rm删除文件之后,空间就被释放了吗?

    来源:编程珠玑 在Linux,你是不是曾经天真的以为,使用rm删除一个文件,占用的空间就释放了?事情可能不是常常如人意. 产生一个指定大小的随机内容文件 我们先看一下当前各个挂载目录的空间大小: $ ...

  4. Hadoop权威指南:HDFS-目录,查询文件系统,删除文件

    目录 Hadoop权威指南:HDFS-目录,查询文件系统,删除文件 目录 查询文件系统 文件元数据:FileStatus 列出文件 文件模式 PathFilter对象 删除数据 Hadoop权威指南: ...

  5. Winform中实现FTP客户端并定时扫描指定路径下文件上传到FTP服务端然后删除文件

    场景 Windows10上怎样开启FTP服务: Windows10上怎样开启FTP服务_BADAO_LIUMANG_QIZHI的博客-CSDN博客 上面在Windows上搭建FTP服务器之后,会接收客 ...

  6. python 删除n天前文件_Linux 按时间批量删除文件命令(删除N天前文件)

    Linux常用命令总结 1.系统信息 arch 显示机器的处理器架构(1) uname -m 显示机器的处理器架构(2) uname -r 显示正在使用的内核版本 dmidecode -q 显示硬件系 ...

  7. Java17-day08【File(创建和删除文件、判断和获取功能、遍历目录)、IO流(字节流写数据、异常处理、字节流读数据、复制文本文件、复制图片)】

    视频+资料(工程源码.笔记)[链接:https://pan.baidu.com/s/1MdFNUADVSFf-lVw3SJRvtg   提取码:zjxs] Java基础--学习笔记(零起点打开java ...

  8. 技术揭秘之详解回收站删除文件恢复

    |=------------------------------------------------------------------------=| |=--------------=[技术揭秘之 ...

  9. php 系统交互 删除文件_FileSystemMap:与文件系统交互的自然方法

    php 系统交互 删除文件 作为项目的一部分,我目前正在研究创建FileSystemMap . 我已经开始了一个非常小的GitHub的项目在这里举办的代码. 本质上,此映射实现将允许用户与其文件系统上 ...

最新文章

  1. 怎么判断程序运行的当前目录在哪?关键词:根目录
  2. Exported activity does not require permission
  3. 求关系模式r的所有候选码_2_1关系数据库的基本概念
  4. 【WebRTC---入门篇】(六)JavaScript基础
  5. 【小项目】学生信息登记系统
  6. NB-IoT(7)---开发环境搭建及模组驱动开发
  7. python 代理服务器 身份验证_使用httplib2处理身份验证和代理服务器
  8. 《逆龄大脑:保持大脑年轻敏锐的新科学》读书笔记
  9. 证明彼得森图不是平面图
  10. HTML(简介及常用标签)
  11. 怎样提取网页视频中的音频文件
  12. 豆瓣时间“黑镜人生”的推荐书单
  13. 交互入门2——射击打靶游戏
  14. Windows打开局域网共享快捷方式脚本制作
  15. 根据文件模板实现预览、生成word、pdf、excel(后端-项目)
  16. 解决:IE浏览器打开就自动最小化,无法打开
  17. 交换机设备登录账号权限1_交换机上配置RADIUS登录认证
  18. Asp.NET + OWC 输出Chart(图表)
  19. js的True、False判断
  20. MATLAB多普勒哈伦分析

热门文章

  1. QQ爬虫-爬取QQ空间
  2. 高能预警!各路大神正火速奔赴8月WOT2016 移动互联网技术峰会
  3. openresty 前端开发序
  4. Java 正则表达式验证小结
  5. 获得服务器硬件信息(CPUID、硬盘号、主板序列号、IP地址等)
  6. 小蚂蚁学习mysql性能优化(4)--SQL以及索引优化--具体一些优化方法
  7. C# 驱动连接 MongoDB ReplSet
  8. 博弈最高位POJ 1704(Georgia and Bob-Nim博弈)
  9. Cassandra 可视化工具
  10. Windows PowerShell 批量迁移Windows用户信息