360的文件粉碎机还是很强大的,在我们客户端winform升级的时候,必须将有些文件进行强力删除后下载更新,如果删除失败很有可能整个 程序就无法更新到最新的版本,所以这里参考了网上的资料整理了一个文件粉碎的小demo,总结了一个类出来,方便以后升级或者其他开发工作的调用

程序运行界面截图

操作gif动画图片

整理的实际类,为了以后使用,提高工作效率

//-------------------------------------------------------------------------------------
// All Rights Reserved , Copyright (C) 2015 , ZTO , Ltd .
//-------------------------------------------------------------------------------------using System;
using System.Diagnostics;
using System.IO;
using System.Text.RegularExpressions;namespace ZTO.WayBill.Utilities
{/// <summary>/// 文件帮助类////// 修改纪录//////          2015-6-5  版本:1.0 YangHengLian 创建主键,注意命名空间的排序。/// /// 版本:1.0////// <author>///        <name>YangHengLian</name>///        <date>2015-6-5</date>/// </author>/// </summary>public class FileHelper{/// <summary>/// 强力粉碎文件,文件如果被打开,很难粉碎/// </summary>/// <param name="filename">文件全路径</param>/// <param name="deleteCount">删除次数</param>/// <param name="randomData">随机数据填充文件,默认true</param>/// <param name="blanks">空白填充文件,默认false</param>/// <returns>true:粉碎成功,false:粉碎失败</returns>public static bool KillFile(string filename, int deleteCount, bool randomData = true, bool blanks = false){const int bufferLength = 1024000;bool ret = true;try{using (FileStream stream = new FileStream(filename, FileMode.Open, FileAccess.ReadWrite, FileShare.ReadWrite)){FileInfo f = new FileInfo(filename);long count = f.Length;long offset = 0;var rowDataBuffer = new byte[bufferLength];while (count >= 0){int iNumOfDataRead = stream.Read(rowDataBuffer, 0, bufferLength);if (iNumOfDataRead == 0){break;}if (randomData){Random randombyte = new Random();randombyte.NextBytes(rowDataBuffer);}else if (blanks){for (int i = 0; i < iNumOfDataRead; i++)rowDataBuffer[i] = 0;}else{for (int i = 0; i < iNumOfDataRead; i++)rowDataBuffer[i] = Convert.ToByte(Convert.ToChar(deleteCount));}// 写新内容到文件。for (int i = 0; i < deleteCount; i++){stream.Seek(offset, SeekOrigin.Begin);stream.Write(rowDataBuffer, 0, iNumOfDataRead);}offset += iNumOfDataRead;count -= iNumOfDataRead;}}//每一个文件名字符代替随机数从0到9。string newName = "";do{Random random = new Random();string cleanName = Path.GetFileName(filename);string dirName = Path.GetDirectoryName(filename);int iMoreRandomLetters = random.Next(9);// 为了更安全,不要只使用原文件名的大小,添加一些随机字母。for (int i = 0; i < cleanName.Length + iMoreRandomLetters; i++){newName += random.Next(9).ToString();}newName = dirName + "\\" + newName;} while (File.Exists(newName));// 重命名文件的新的随机的名字。File.Move(filename, newName);File.Delete(newName);}catch{//可能其他原因删除失败了,使用我们自己的方法强制删除try{string fileName = filename;//要检查被那个进程占用的文件Process tool = new Process { StartInfo = { FileName = "handle.exe", Arguments = fileName + " /accepteula", UseShellExecute = false, RedirectStandardOutput = true } };tool.Start();tool.WaitForExit();string outputTool = tool.StandardOutput.ReadToEnd();string matchPattern = @"(?<=\s+pid:\s+)\b(\d+)\b(?=\s+)";foreach (Match match in Regex.Matches(outputTool, matchPattern)){//结束掉所有正在使用这个文件的程序Process.GetProcessById(int.Parse(match.Value)).Kill();}File.Delete(fileName);}catch{ret = false;}}return ret;}}
}

C#强烈粉碎文件代码相关推荐

  1. C#强力粉碎文件代码分享,升级中用到

    360的文件粉碎机还是很强大的,在我们客户端winform升级的时候,必须将有些文件进行强力删除后下载更新,如果删除失败很有可能整个 程序就无法更新到最新的版本,所以这里参考了网上的资料整理了一个文件 ...

  2. 粉碎机无法粉碎文件_5粉碎敏捷挑战以及如何克服它们

    粉碎机无法粉碎文件 Agile methodology has been developed as a new way to manage projects in teams. It was supp ...

  3. 粉碎机无法粉碎文件_宣布《粉碎杂志》

    粉碎机无法粉碎文件 Life at Smashing Magazine never stops throwing new surprises and challenges my way. When I ...

  4. C# 系统应用之调用SDelete程序粉碎文件及基础原理知识

    在"个人电脑清除软件"中需要对文件进行彻底粉碎,使其不可恢复.这篇文章主要讲述的是Windows文件系统及调用SDelete程序彻底粉碎文件,希望文章对大家有所帮助. 一.Wind ...

  5. 如何粉碎文件 - C#

    最近比较懒,写啦挺多好东西,就是没拿出来,今天发一个自己写的ShredFile类 >文件粉碎的流程 填充文件 更改最后使用/创建时间 更改名称 将大小改为 0 kb 删除 >具体代码 Vi ...

  6. python读文件代码-Python读取表格类型文件代码实例

    这篇文章主要介绍了Python读取表格类型文件代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 代码如下 resp = My_Request_ ...

  7. python读文件代码-简单了解Python读取大文件代码实例

    这篇文章主要介绍了简单了解Python读取大文件代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 通常对于大文件读取及处理,不可能直接加载到内 ...

  8. python怎么保存文件代码_Python文件读写保存操作的实现代码

    本篇文章给大家带来的内容是关于Python文件读写保存操作的实现代码 ,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 记录下第一次使用Python读写文件的过程,虽然很简单,第一次实 ...

  9. php+easyui+上传文件,easyui 上传文件代码

    using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.IO ...

最新文章

  1. 【jquery】用jsp写jquery的模板
  2. ADO.NET Data Services Framework 基础概述
  3. 使用Silverlight for Embedded开发绚丽的界面(4)
  4. 课堂练习——最大联通之数组
  5. 快速幂、矩阵快速幂、快速乘法
  6. repr方法字符串输出实例对象的值
  7. Qt工作笔记-仿QQ登录界面(换肤,切换语言)
  8. 2018年大学生创业项目推荐
  9. 图像的旋转——imrotate
  10. java 继承抽象类_java基础之继承,抽象类
  11. Git error: unable to create file xxx: Filename too long
  12. 华为发放20亿元奖金,抗击美国断供,奖励员工加班奋斗,网友:他们应得的...
  13. tomcat启动异常之信The APR based Apache Tomcat Native library which allows optimal performance in produ
  14. 微信与php什么区别,微信小店和微信小程序的区别是什么?
  15. 微信公众号给微信用户推送信息 模板信息
  16. 沙漠帕拉萨德别墅室内外Corona建筑作品赏析
  17. Win10下载Ubuntu Linux虚拟机设置管理员名称时无法通过NAME_REGEX的检查,--force-badname也无法通过
  18. Python 中的“多维”字典 (multi-dimension dictionary)
  19. latex 字体大小设置
  20. 论文要查重的弟兄姐妹看过来

热门文章

  1. 基于mp4parser的视频剪切,视频合并,视频转码实例
  2. lyapunov指数求取时运用qr法与jacobi法之间的区别与联系【基于matlab的动力学模型学习笔记_10】
  3. 分布式缓存数据库面试题redis
  4. ADSL PPPOE 实验
  5. ranger 远程调试
  6. 计算机控制与自动化专业世界排名,2019ARWU软科世界大学自动化与控制专业排名TOP50...
  7. linux内核编译和安装
  8. 继电器写法c语言单片机,单片机驱动继电器详解
  9. python将秒转换成天时分秒
  10. 计算机毕业论文指导过程记录表6,毕业论文指导记录表6次