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

news/2024/11/30 14:29:43/

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

(注:参考的教材使用的是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


http://www.ppmy.cn/news/371526.html

相关文章

文件无法粉碎解决办法

1、先打具有删除功能的第三方UI界面并可以保持运行&#xff1b; 2、打开“任务管理器”&#xff0c;右击“Windows资源管理器”&#xff0c;点击“结束进程”&#xff1b; 3、这时所有Windows的UI都会消失&#xff0c;这是正常现象&#xff0c;接着可以使用文件粉碎机点击粉碎&…

Go语言日志库zerolog

Go语言日志库zerolog 在开发大型项目时&#xff0c;将日志进行结构化以提高可读性、可查询性和速度是非常重要的。 为什么你选择不使用其他结构化日志库&#xff0c;如logrus或zap? Zerolog 是一款高性能且极易使用的日志库&#xff0c;zerolog 只专注于记录 JSON 格式的日…

贫困的苏州(转自新浪)

“月落乌啼霜满天&#xff0c; 江枫渔火对愁眠。 姑苏城外寒山寺&#xff0c; 夜半钟声到客船。” 古诗里的苏州&#xff0c;是文化的沧桑与历史的厚重。城里的繁荣与寒山寺的孤寂&#xff0c;经济的发达 和思想的空灵&#xff0c;夜色之静跟耳畔钟声&#xff0c;全部融进如画…

mySql 储存过程 多个结果返回解析

当需要查询复杂的数据模型并返回多个结果集时&#xff0c;使用 MySQL 存储过程可以有效地优化性能。同时&#xff0c;在开发中使用 Mybatis 可以方便地调用 MySQL 存储过程并获取多个结果集。本文将介绍如何在 Mybatis 中调用 MySQL 存储过程&#xff0c;并获取多个结果集。 1、…

我的创作纪念日 2048 AI 面试 Java GoLang

《突击面试》 《面试1v1》 机缘 提示&#xff1a;可以和大家分享最初成为创作者的初心 例如&#xff1a; 实战项目中的经验分享日常学习过程中的记录通过文章进行技术交流… 收获 提示&#xff1a;在创作的过程中都有哪些收获 例如&#xff1a; 获得了多少粉丝的关注获得…

计算机连接公用网络受限,电脑连接无线网络受限怎么解决【解决方法】

在信息 现代 化和计算机普及的社会&#xff0c;想必我们都对计算机不陌生&#xff0c;我们习惯称之为电脑&#xff0c;电脑正在改变着我们学习、生活和工作的方式&#xff0c;电脑已经成为我们生活中相当重要的一部分了。在平时使用电脑时&#xff0c;大家是否会遇到电脑连接无…

win7不能无线连接网络连接服务器,win7系统无线网络受限如何解决

【网友提问】我使用的是win7系统&#xff0c;电脑经常好端端的会遇到无线网络受限故障&#xff0c;经常需要重启设备才能解决问题&#xff0c;不知道这样的故障是否有解决的方法? 【win7之家解答】网络故障是咱们上网经常会遇到的问题&#xff0c;但是总的来说都有一些比较常用…

win10新无线网无法连接服务器,Win8无线网络无法连接怎么办?

其他相关 Win8无线网络无法连接怎么办_百度搜索if(window.bds&&bds.util&&bds.util.setContainerWidth){bds.util.setContainerWidth();}老牌系统&#xff1a;www.lpxt.com 输入法手写 拼音 关闭百度首页设置登录2020win7&#xff1a;www.2020win7.com 网页资讯…