用C#Winform写个简单的批量清空文件内容和删除文件的小工具
用C#Winform写个简单的批量清空文件内容和删除文件的小工具
本文介绍这个简单得不能再简单的小项目。做这个项目,有以下目的。
1 |
当然是做个能用的工具 |
2 |
学习使用Github |
关于用VS2013创建一个项目并添加到Github的教程,请参考(http://www.admin10000.com/document/4004.html)。简单来说,就是先用VS创建项目;然后在Github网站上创建一个Respo(本项目的代码托管项目),记下(https://*.git)那个地址;最后用"提交""同步"这些按钮来同步代码到服务器。
这个小工具我命名为FileWiper,其Github地址为(https://github.com/bitzhuwei/FileWiper.git),欢迎大家来讨论。
使用Github
有一个仓库,叫Repo A。你如果要往里贡献代码,首先要Fork这个Repo,于是在你的Github账号下有了一个Repo A2,。然后你在这个A2下工作,Commit,push等。然后你希望原始仓库Repo A合并你的工作,你可以在Github上发起一个Pull Request,意思是请求Repo A的所有者从你的A2合并分支。如果被审核通过并正式合并,这样你就为项目A做贡献了
清空文件内容
只需打开文件,将原来的内容覆盖掉即可。要想彻底消灭文件数据,最好就是销毁其中的内容,然后把文件名改掉,最后再删除文件。这样,即使文件被什么工具恢复了,也只是文件名没有意义,内容为空的一个无用的东西。
public static void WipeFileContent(string filename) { using (var stream = new System.IO.StreamWriter(filename, false)) { stream.Write("http://bitzhuwei.cnblogs.com"); } } |
注册到系统右键菜单
用RegistryKey进行注册。
程序路径后面跟了个" %1",这样在启动时,在Main函数里的args参数就会包含选定的文件路径(或文件夹路径)。
private void btnRegister_Click(object sender, EventArgs e)
{
//给所有类型的文件添加自定义的右键菜单
{
var itemName = "Wipe Content";
var associatedProgramFullPath = this.GetType().Assembly.Location;
//创建项:shell
RegistryKey shellKey = Registry.ClassesRoot.OpenSubKey(@"*\shell", true);
if (shellKey == null)
{
shellKey = Registry.ClassesRoot.CreateSubKey(@"*\shell");
} //创建项:右键显示的菜单名称
RegistryKey rightCommondKey = shellKey.CreateSubKey(itemName);
RegistryKey associatedProgramKey = rightCommondKey.CreateSubKey("command"); //创建默认值:关联的程序
associatedProgramKey.SetValue(string.Empty, associatedProgramFullPath + " %1"); //刷新到磁盘并释放资源
associatedProgramKey.Close();
rightCommondKey.Close();
shellKey.Close();
} //给所有文件夹添加自定义的右键菜单
{
var itemName = "Wipe Directory";
var associatedProgramFullPath = this.GetType().Assembly.Location;
//创建项:shell
RegistryKey shellKey = Registry.ClassesRoot.OpenSubKey(@"directory\shell", true);
if (shellKey == null)
{
shellKey = Registry.ClassesRoot.CreateSubKey(@"*\shell");
} //创建项:右键显示的菜单名称
RegistryKey rightCommondKey = shellKey.CreateSubKey(itemName);
RegistryKey associatedProgramKey = rightCommondKey.CreateSubKey("command"); //创建默认值:关联的程序
associatedProgramKey.SetValue("", associatedProgramFullPath +" %1"); //刷新到磁盘并释放资源
associatedProgramKey.Close();
rightCommondKey.Close();
shellKey.Close();
}
}
注册到系统右键菜单
取消注册系统右键菜单
仍然用RegistryKey实现。
private void btnUnregister_Click(object sender, EventArgs e)
{
//给所有类型的文件删除自定义的右键菜单
{
var itemName = "Wipe Content";
var associatedProgramFullPath = this.GetType().Assembly.Location;
//创建项:shell
RegistryKey shellKey = Registry.ClassesRoot.OpenSubKey(@"*\shell", true);
if(shellKey!=null)
{
shellKey.DeleteSubKeyTree(itemName, false);
} //刷新到磁盘并释放资源
shellKey.Close();
} //给所有文件夹删除自定义的右键菜单
{
var itemName = "Wipe Directory";
var associatedProgramFullPath = this.GetType().Assembly.Location;
//创建项:shell
RegistryKey shellKey = Registry.ClassesRoot.OpenSubKey(@"directory\shell", true);
if (shellKey != null)
{
shellKey.DeleteSubKeyTree(itemName, false);
} //刷新到磁盘并释放资源
shellKey.Close();
}
}
取消注册系统右键菜单
欢迎大家到本项目的github上关注(https://github.com/bitzhuwei/FileWiper.git)!
用C#Winform写个简单的批量清空文件内容和删除文件的小工具的更多相关文章
- Linux批量清理多个文件内容而不删除文件
清理单个文件,可以这样:echo > myLog.log 但是,如果我要清理一堆文件,比如在/logs目录下面的所有以.log结尾的文件的内容,而不删除文件,该如何操作呢? 我一开始的语句是这样 ...
- Linux批量清空当前目录中的日志文件
在Linux中,有时需要批量清空当前目录中的日志文件,同时还要保留日志文件. 其实一行shell命令就可以搞定,一起来看看吧. 在当前目录下,键入如下命令: for i in `find . -nam ...
- 批量查询PDF文本并导出结果的小工具
效果: 批量查询指定关键字 & 指定目录下PDF文件中的文本,并导出文件路径和关键字所在文本行. 下载: 链接: https://pan.baidu.com/s/1sK2OMMgGX26l7P ...
- 【原创】linux 批量清空文本内容
清空所有PHP文件 find . -name '*.php'|xargs sed -i '1,$d' 清空所有文件 find . -type f|xargs sed -i '1,$d'
- linux shell中如何批量添加一行内容到某些文件的末尾?
答:先使用find找出要指定的某些文件,然后使用xargs和sed工具将内容插入到这些文件的末尾 find . -name 'filename*' | xargs sed -i '$a\added-c ...
- SpringMVC文件上传 Excle文件 Poi解析 验证 去重 并批量导入 MYSQL数据库
SpringMVC文件上传 Excle文件 Poi解析并批量导入 MYSQL数据库 /** * 业务需求说明: * 1 批量导入成员 并且 自主创建账号 * 2 校验数据格式 且 重复导入提示 已被 ...
- ansible写一个简单的playbook
前言 实现的功能很简单,就是通过ansible批量完成某个账户sudo权限的开通或关闭 目录结构 ├── group_vars #放置各种变量的目录,我这里没用 ├── hosts #主机和组配置,默 ...
- winform 下log4net简单应用示例及“缺少log4net引用”的处理方案
1.添加应用log4net.dll 2.新增log4net.config文件,文件内容如下 <?xml version="1.0" encoding="utf-8& ...
- 【Python项目】简单爬虫批量获取资源网站的下载链接
简单爬虫批量获取资源网站的下载链接 项目链接:https://github.com/RealIvyWong/GotDownloadURL 1 由来 自己在收集剧集资源的时候,这些网站的下载链接还要手动 ...
随机推荐
- Linux的学习之路
linux的安装配置.常用命令: 基本上学习任务: 1.在VMware(9)虚拟机上安装Linux操作系统(安装CentOs操作系统) 2.了解Linux操作系统 3.通过XShell工具操作Linu ...
- CentOS 6.5 x86_64系统手动释放内存
1.查询当前内存使用情况和释放缓存的参数 redismaster 10:29:24 [~] [root] free -m total used free shared buffers cachedMe ...
- ZOJ3790_Consecutive Blocks
给出一个数组,最多可以删除k个数,问能够获得的最长的一个数字连续段为多少? 把所有相同的数字都提取出来,保存取得每个数字需要删除的数字,然后二分枚举就可以了. 召唤代码君: #include < ...
- 关于Spring和mybatis的整合
Spring同Mybatis的整合 1.引入相应的jar包.(Mybatis的jar包,Spring的jar包,mybatis-spring-1.1.1.jar). 2.编写相应的包(三层的包).搭建 ...
- XAMARIN +VS2015 ANDROID 开发禁止屏幕自动转动 Portrait,Nosensor
网上有很多java的写法,但是放在C#中都无法使用,其实有时候还是安下心来认真的去看官网文档比在百度或者google来的快的多 this.RequestedOrientation = Android. ...
- Linux系统目录结构
Linux系统目录结构图 目录:/ 是Linux的根目录 每个文件和目录从根目录开始,只有root用户具有该目录下的写权限: /root是root用户的主目录,这与 / 目录不一样: 目录:/bin ...
- android/ios js 启动apk
1.在移动设备访问某个连接时时,如果本地安装了其应用客户端,则浏览器会调用本地客户端,没有安装则会跳转到下载页面,提示安装.刚好有这样的需求,网上参考了其他人的实现,大部分都是关于APK和本地js交互 ...
- Win7下安装一个装逼文本编辑器Atom + activate-power-mode插件
Atom是Github推出的一个文本编辑器,搜索一下大概是给Web前端用的,最近比较火的是他的一个插件activate-power-mode,可以实现打字屏振效果. 用来装装逼还是挺适合的,本来想试试 ...
- MMC不能打开文件D:\Program Files\Microsoft SQL Server\80\Tools\BINN\SQL Server Enterprise Manager.MSC
以上问题的解决方式如下: 1. 打开windows运行对话框.在对话框输入mmc.打开了如图所示的控制台. 2. 文件---添加/删除管理单元(M). 3. 添加.然后选择Microsoft SQL ...
- 黑马程序员-autorelease pool
Autorelease:可以延迟给对象发送release消息.发送一个autorelease消息给对象,证明该对象在一定时间内有效,一定时间后会对该对象进行释放,进行一次release. 一个auto ...