文件操作(2):文件粉碎机

文件粉碎机原理:文件被删除之前,用随机字符对其进行写操作

(注:参考的教材使用的是BCB编译器,BCB不会,所以这里改成使用MFC)

一、

首先建立一个基于对话框的MFC工程,在对话框添加如图所示控件

二、

接下来添加 statusbar(状态栏)控件,使用 CStatusBarCtrl类,具体操作是在主对话框文件中添加,一个类型为CStatusBarCtrl的成员变量 m_StatusBar

CStatusBarCtrl m_StatusBar;

在初始化函数中对其进行初始化:

m_StatusBar.Create(WS_CHILD|WS_VISIBLE|SBT_OWNERDRAW, CRect(0,0,0,0), this, 0);int strPartDim[2]= { 400, -1}; //分割成左右两份,左边占400个像素

m_StatusBar.SetParts(2, strPartDim);

设置好之后,我们用CStatusBarCtrl::SetText()就可以在状态栏上显示文字了。

注意,VC6.0中,状态栏不能在资管控件中直接添加,而是需要使用程序来创建,因此,也只有在程序运行之后才能显示出来

三、

下面来添加对话框控件的响应。首先点击浏览要弹出打开文件对话框,点击文件夹的文件,令点击的文件名显示在左边的文本编辑框中。

1、首先为文本编辑框关联一个名为m_strPath 的成员变量。按下ctrl+w,选择编辑控件ID,添加成员变量,输入m_strPath

2、双击 浏览按钮,进入响应函数,在里面添加如下代码:

//TODO: Add your control notification handler code here

UpdateData(TRUE);

CFileDialog fileDlg(TRUE);

fileDlg.m_ofn.lpstrTitle="打开文件";

fileDlg.m_ofn.lpstrFilter="All Files(*.*)\0*.*\0\0"; fileDlg.m_ofn.lpstrDefExt="*.txt";if(IDOK==fileDlg.DoModal())

{

CFile file(fileDlg.GetFileName(),CFile::modeRead);

m_strPath=fileDlg.GetPathName(); //将文件名赋给m_strPath

UpdateData(FALSE); //立即显示出来

}

四,主程序,双击开始粉碎,添加按钮响应。

添加如下代码:

if(m_strPath=="")

{return;

}if((MessageBox("文件一旦删除将无法恢复,您确定要继续执行操作吗?","提醒",MB_OKCANCEL|MB_ICONWARNING|MB_DEFBUTTON2))==IDCANCEL)

{

m_StatusBar.SetText(_T("您取消了操作"), 0, 0); //设置状态栏文本提示信息

return;

}char buff[1024]={0};

HANDLE hFile=CreateFile(m_strPath,GENERIC_WRITE|GENERIC_READ,FILE_SHARE_WRITE,NULL,OPEN_EXISTING,NULL,NULL);

DWORD dwLen=SetFilePointer(hFile,0,NULL,FILE_END);

CString temp;

temp.Format("文件大小%dbyte",dwLen);

m_StatusBar.SetText(temp,0, 0);for(int i=0;i<3;i++)

{

temp.Format("共进行%d遍擦除",i+1);

m_StatusBar.SetText(temp,0, 0);

SetFilePointer(hFile,0,NULL,FILE_BEGIN);if(dwLen<=1024)

{

dwLen=WriteFile(hFile,buff,(dwLen

}

}

CloseHandle(hFile);if(!DeleteFile(m_strPath))

{

m_StatusBar.SetText(_T("文件删除失败,但已无法恢复"), 0, 0);

}

五、

添加取消按钮的响应,双击,写个OnOK();就行了

程序运行效果:

电脑粉碎文件 c语言,文件操作(二):文件粉碎机相关推荐

  1. linux 获取文件父目录权限,Linux 文件权限中,操作一个文件需要父目录的那些权限?...

    eudore:linux 文件权限中,操作一个文件需要父目录的那些权限? 是否需要检查每级目录?想找到一份完整规范正确的指导,自己在写检查 linux 用户文件权限的代码. 例如读取一个文件 /hom ...

  2. r语言读取C盘的csv文件,R语言开发之CSV文件的读写操作实现

    在R中,我们可以从存储在R环境外部的文件读取数据,还可以将数据写入由操作系统存储和访问的文件.这个csv文件应该存在于当前工作目录中,以方便R可以读取它, 当然,也可以设置自己的目录,并从那里读取文件 ...

  3. BS文件夹上传操作(二) ——基本功能实现

    上篇<BS文件夹上传操作 >大概说明了我所需要的需求, 接着上次的命题:  "如果有一个需求,要求你在BS上实现文件夹上传操作功能?你该如何实现?" ActiveX?J ...

  4. php phar 文件使用,PHP如何操作phar文件

    这次给大家带来PHP如何操作phar文件,PHP操作phar文件的注意事项有哪些,下面就是实战案例,一起来看一下. 本文实例讲述了PHP开发之归档格式phar文件概念与用法.分享给大家供大家参考,具体 ...

  5. 创建ogg文件 c语言,Ogg音频格式文件的样本构造(CVE-2018-5146)

    原标题:Ogg音频格式文件的样本构造(CVE-2018-5146) *严正声明:本文仅限于技术讨论与分享,严禁用于非法途径 下面的所有分析都是在Firefox 59.0 32位上进行的.由于笔者是刚入 ...

  6. python以写模式打开的文件无法进读操作_Python文件操作:文件的打开关闭读取写入...

    Python文件操作:文件的打开关闭读取写入 一.文件的打开关闭 Python能以文本和二进制两种方式处理文件,本文主要讨论在Python3中文本文件的操作. 文件操作都分为以下几个步骤: 1.打开文 ...

  7. c语言头文件_C语言学习之头文件的原理和使用方法

    头文件是扩展名为 .h 的文件,包含了 C 函数声明和宏定义,被多个源文件中引用共享.有两种类型的头文件:程序员编写的头文件和编译器自带的头文件. 在程序中要使用头文件,需要使用 C 预处理指令 #i ...

  8. c++ 按行读取txt文件并赋值_python操作txt文件中数据教程[3]python读取文件夹中所有txt文件并将数据转为csv文件...

    觉得有用的话,请点击右下角 推荐给更多小伙伴 neoken_xuAsurada2015Evacloud 参考文献 python 操作 txt 文件中数据教程[1]-使用 python 读写 txt 文 ...

  9. 易语言从c盘开始搜索文件,易语言全盘查找指定文件并返回地址

    易语言全盘查找指定文件并返回地址,类似于全盘扫描文件,可以学习一下 .版本 2 .支持库 iext .子程序 列表, , , ***寻找目录下的所有子目录** .参数 路径, 文本型 .参数 查找的文 ...

  10. c语言处理单色bmp文件,C语言处理单色BMP文件

    使用C 语言获得黑白BMP文档的参数而不使用其他函数. 使用C处理单色BMP照片 首先要了解BMP文件的格式: BMP图片的扫描方式 是从左到右,从下至上,对每个像素取值.一个扫描行所占的字节数为4的 ...

最新文章

  1. Linux服务器安装JDK、Tomcat配置web网站
  2. 全部python编程语言-可以用 Python 编程语言做哪些神奇好玩的事情?
  3. bzoj4631踩气球
  4. 在 XML 中添加实体
  5. java 连接 sql2005,java与sql server2005 连接有关问题
  6. 远程连接server问题
  7. 【文末赠书】牛顿:伸向未知量的利爪
  8. C++中const的一些知识点
  9. 最全的iOS真机调试教程(证书生成等)
  10. linux换硬盘网卡不能启动,服务器硬盘冷迁移后网卡无法启动问题
  11. maven依赖冲突解决_Maven依赖树–解决冲突
  12. br php 配置,无法载入 mcrypt 扩展,br /请检查 PHP 配置终极解决方案
  13. 【优化算法】粒子群优化算法(PSO)【含Matlab源码 1073期】
  14. 分苹果(C语言实现)
  15. linux hdmi /dev/fb操作,HDMI接口学习笔记
  16. MAC 虚拟机配置静态IP
  17. ibeacon的实现,广播数据解析
  18. [深度学习]如何替换YoloV5的主干网络:Flexible-Yolov5
  19. java访问https链接下载图片
  20. 【SCI\EI】英语论文中的常用字体是什么

热门文章

  1. Vijos P1848 记数问题【进制】
  2. 在C++工程中设置全局函数
  3. 备份mysql的bat脚本
  4. 关于蹭网的一点点感想
  5. Bitcoin.com支持BCH第N弹——派息神器SLP Dividend Calculator
  6. 逆袭!BCH交易超越BTC
  7. memcached 高可用工具 memcached-ha
  8. 2017敏捷沙滩大会:完美软件,测量持续交付,以及探索未来
  9. Caffe将自己的文件生成lmdb
  10. Java中isAssignableFrom的用法