用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 由来 自己在收集剧集资源的时候,这些网站的下载链接还要手动 ...
随机推荐
- IOS开发之网络图片处理
//图片压缩 UIImage* image=[UIImage imageWithData:data]; NSData *data1 = UIImageJPEGRepresentation(image, ...
- HBase安装及简单使用
通过之前的hadoop0.20.2的安装并调试成功,接下来我们继续安装hbase0.90.5.在安装hbase0.90.5之前,因为hbase0.90.5只支持jdk1.6,所以,我把之前的jdk1. ...
- 设计模型MVC和JavaBean
六.设计模型1和设计模型2(MVC)1.模型1:JSP+JavaBean2.模型2:MVC M:Model模型 JavaBean V:视图 JSP C:控制器 Servlet 七.模型1开发一个简单的 ...
- cnavas
1.创建一个画布eg:<cnavas width=100px;height=100px; style="border:1px solid rgba(242 ,54,33,0.1)&qu ...
- C#语言基础— 输入与输出
C#语言基础— 输入与输出 1.1函数的四要素:名称.输入.输出.加工 1.2主函数:输出语句.输入语句: Static viod Main(string[] stgs)//下划线部分可以自己指定 { ...
- 自己对Extjs的Xtemplate的忽略
之前学习extjs Xtmeplate受一些书籍的误导,说Xtemplate不支持else ,今天仔细看了官网的示例,才恍然大悟,卧槽!不仅支持if-elseif-else结构 连switch都能够支 ...
- [PL/SQL] 如何规避异常ORA-01403
如果mytable表中不存在 ID = 123 的数据,那么 SELECT Flag INTO flag FROM mytable WHERE ID = 123 将抛出异常ORA-01403 SELE ...
- 利用FPGA加速实现高性能计算
原文链接 原因:处理器本身无法满足高性能计算(HPC)应用软件的性能需求,导致需求和性能 之间出现了缺口. 最初解决办法:使用协处理器来提升处理器的性能. 协处理器(基于硬件的设计)具有三种能力: 1 ...
- springboot maven install 找不到符号
好多朋友在网上找maven install 找不到符号,我今天也遇到了同样的问题,我项目结构如下: 在multicreate-web这个项目引用了multicreate-service的jar包,在i ...
- gc roots 垃圾回收
gc roots包括以下几个: 虚拟机栈(栈桢中的本地变量表)中的引用对象 方法区中的类静态属性引用的对象 方法区中的常量引用的对象 本地方法栈中JNI(即native方法)的引用的对象 java,c ...