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

(注:参考的教材使用的是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_strPathUpdateData(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<sizeof(buff))?dwLen:sizeof(buff),&dwLen,NULL);}}CloseHandle(hFile);if(!DeleteFile(m_strPath)){m_StatusBar.SetText(_T("文件删除失败,但已无法恢复"), 0, 0);}

五、

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

程序运行效果:

转载于:https://www.cnblogs.com/lanf/p/5091601.html

文件操作(2):文件粉碎机相关推荐

  1. C++ 学习笔记之——文件操作和文件流

    1. 文件的概念 对于用户来说,常用到的文件有两大类:程序文件和数据文件.而根据文件中数据的组织方式,则可以将文件分为 ASCII 文件和二进制文件. ASCII 文件,又称字符文件或者文本文件,它的 ...

  2. python关闭读写的所有的文件-Python文件操作:文件的打开关闭读取写入

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

  3. Kettle使用_15 文件操作复制文件到结果

    Kettle使用_15 文件操作复制文件到结果 需求: 通过Kettle的组件实现文件夹下所有文件的复制到另外个文件夹. 解决方法:结合获取文件名.复制文件名到结果.执行作业.添加到结果文件列表.复制 ...

  4. java删除相对路径文件夹_Java IO,io,文件操作,删除文件,删除文件夹,获取文件父级目录...

    Java IO,io,文件操作,删除文件,删除文件夹,获取文件父级目录 这里先简单的贴下常用的方法: File.separator //当前系统文件分隔符 File.pathSeparator// F ...

  5. .NET基础-11-ArrayList|Hashtable|File文件操作|Dircetioy文件夹操作|Path路径操作

    集合 ArrayList与Hashtable应为存在拆箱与装箱,所以性能不怎么好,尽量不要使用,而使用泛型集合 可以使用下面的方式输出所消耗的时间 //ArrayList arl = new Arra ...

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

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

  7. 今天的码农女孩做了关于文件操作和文件拖拽的笔记 2022/1/21

    文件操作和文件拖拽 文件操作: js有两种机制:一个是事件机制,一个是io机制 文件操作对象: Blob通过二进制数据读取 file读取单个文件对象 fileList读取多个文件对象 fileRead ...

  8. c++:文件操作1 文件的打开

    在程序中,要使用一个文件,先要打开文件后才能读写,读写完后要关闭.创建一个新文件也要先执行打开(open)操作,然后才能往文件中写入数据.C++ 文件流类有相应的成员函数来实现打开.读.写.关闭等文件 ...

  9. python对文件的读操作有哪些方法-Python之文件操作:文件的读写

    一.open函数:对文件读写之前,需要先打开文件,获取文件句柄 注意:open() file() 尽量使用open(),Python3以后不支持file()了 1.open(file_name[,ac ...

  10. 【C 语言】文件操作 ( 读取文件中的结构体数组 | feof 函数使用注意事项 )

    文章目录 一.读取文件中的结构体数组 | feof 函数使用注意事项 二.代码示例 一.读取文件中的结构体数组 | feof 函数使用注意事项 读取文件结构体时 , 可以循环读取文件中的数据 , 只使 ...

最新文章

  1. 不忘初心,砥砺前行——写在数据院成立四周年之际
  2. zabbix 配置mysql_zabbix 配置mysql监控
  3. Hive vs HBase (配合使用才是最佳方案)
  4. 池与线程池 技术点 目录 1. 线程池作用: 提升性能 1 2. 使用流程 1 3. 线程与线程池的监控 jvisual 1 4. 线程常用方法 2 5. 线程池相关概念 2 5.1. 队列
  5. 戴上这个之后,你再也不是个凡人(doge)
  6. pagesize==0异常问题
  7. ETL自学之路-02(维度建模)
  8. 出租车捧红嘀嗒?这个似乎是一个谎言
  9. JDK8——IntStream
  10. python画好看的图案-妈耶,python的散点图竟然能画这么好看!
  11. Wannafly挑战赛24D-无限手套【dp】【数学】
  12. 智慧供水管网监测方案助力水资源高效利用
  13. 计算机机器人兴趣小组活动总结,科技活动总结范文5篇
  14. 关于SSL证书链的一些认识
  15. 【大数据】《红楼梦》作者分析(QDU)
  16. BIM设计要做哪些准备工作才能真正完成建筑全生命周期的使命
  17. 刚出道的黑客搞瘫美国输油管道!
  18. java记忆纸牌 计分功能,怎样用数字编码记忆法记忆扑克牌
  19. 两个人在一起的相处之道
  20. NoSQL应用场景及Cassandra架构实现分析

热门文章

  1. 人工智能未来将呈现四大趋势
  2. 火狐双击关闭标签页设置
  3. 陆军转行5G网络优化工程师,月薪9K!—路星远行则可至,事金难做则可成!
  4. 【STM32WLE5之LoRa# 系列1、易智联LM401 评估板简介】
  5. 新浪微博登陆开发流程
  6. essay--上海到南京间D字头列车时刻表
  7. 接口部分重点内容查找(老师给的PPT)
  8. JavaScript中数组的创建方式及数组常用方法
  9. Extjs 扩展Htmleditor,支持 图片上传 文件上传 插入flash 插入多媒体 插入层 插入横线等功能...
  10. thinkphp的数据库方法column