文件操作(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_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):文件粉碎机相关推荐
- C++ 学习笔记之——文件操作和文件流
1. 文件的概念 对于用户来说,常用到的文件有两大类:程序文件和数据文件.而根据文件中数据的组织方式,则可以将文件分为 ASCII 文件和二进制文件. ASCII 文件,又称字符文件或者文本文件,它的 ...
- python关闭读写的所有的文件-Python文件操作:文件的打开关闭读取写入
Python文件操作:文件的打开关闭读取写入 一.文件的打开关闭 Python能以文本和二进制两种方式处理文件,本文主要讨论在Python3中文本文件的操作. 文件操作都分为以下几个步骤: 1.打开文 ...
- Kettle使用_15 文件操作复制文件到结果
Kettle使用_15 文件操作复制文件到结果 需求: 通过Kettle的组件实现文件夹下所有文件的复制到另外个文件夹. 解决方法:结合获取文件名.复制文件名到结果.执行作业.添加到结果文件列表.复制 ...
- java删除相对路径文件夹_Java IO,io,文件操作,删除文件,删除文件夹,获取文件父级目录...
Java IO,io,文件操作,删除文件,删除文件夹,获取文件父级目录 这里先简单的贴下常用的方法: File.separator //当前系统文件分隔符 File.pathSeparator// F ...
- .NET基础-11-ArrayList|Hashtable|File文件操作|Dircetioy文件夹操作|Path路径操作
集合 ArrayList与Hashtable应为存在拆箱与装箱,所以性能不怎么好,尽量不要使用,而使用泛型集合 可以使用下面的方式输出所消耗的时间 //ArrayList arl = new Arra ...
- python以写模式打开的文件无法进读操作_Python文件操作:文件的打开关闭读取写入...
Python文件操作:文件的打开关闭读取写入 一.文件的打开关闭 Python能以文本和二进制两种方式处理文件,本文主要讨论在Python3中文本文件的操作. 文件操作都分为以下几个步骤: 1.打开文 ...
- 今天的码农女孩做了关于文件操作和文件拖拽的笔记 2022/1/21
文件操作和文件拖拽 文件操作: js有两种机制:一个是事件机制,一个是io机制 文件操作对象: Blob通过二进制数据读取 file读取单个文件对象 fileList读取多个文件对象 fileRead ...
- c++:文件操作1 文件的打开
在程序中,要使用一个文件,先要打开文件后才能读写,读写完后要关闭.创建一个新文件也要先执行打开(open)操作,然后才能往文件中写入数据.C++ 文件流类有相应的成员函数来实现打开.读.写.关闭等文件 ...
- python对文件的读操作有哪些方法-Python之文件操作:文件的读写
一.open函数:对文件读写之前,需要先打开文件,获取文件句柄 注意:open() file() 尽量使用open(),Python3以后不支持file()了 1.open(file_name[,ac ...
- 【C 语言】文件操作 ( 读取文件中的结构体数组 | feof 函数使用注意事项 )
文章目录 一.读取文件中的结构体数组 | feof 函数使用注意事项 二.代码示例 一.读取文件中的结构体数组 | feof 函数使用注意事项 读取文件结构体时 , 可以循环读取文件中的数据 , 只使 ...
最新文章
- 不忘初心,砥砺前行——写在数据院成立四周年之际
- zabbix 配置mysql_zabbix 配置mysql监控
- Hive vs HBase (配合使用才是最佳方案)
- 池与线程池 技术点 目录 1. 线程池作用: 提升性能	1 2. 使用流程	1 3. 线程与线程池的监控 jvisual	1 4. 线程常用方法	2 5. 线程池相关概念	2 5.1. 队列
- 戴上这个之后,你再也不是个凡人(doge)
- pagesize==0异常问题
- ETL自学之路-02(维度建模)
- 出租车捧红嘀嗒?这个似乎是一个谎言
- JDK8——IntStream
- python画好看的图案-妈耶,python的散点图竟然能画这么好看!
- Wannafly挑战赛24D-无限手套【dp】【数学】
- 智慧供水管网监测方案助力水资源高效利用
- 计算机机器人兴趣小组活动总结,科技活动总结范文5篇
- 关于SSL证书链的一些认识
- 【大数据】《红楼梦》作者分析(QDU)
- BIM设计要做哪些准备工作才能真正完成建筑全生命周期的使命
- 刚出道的黑客搞瘫美国输油管道!
- java记忆纸牌 计分功能,怎样用数字编码记忆法记忆扑克牌
- 两个人在一起的相处之道
- NoSQL应用场景及Cassandra架构实现分析