用C语言清空一个文件夹.docx

上传人:牧羊曲112 文档编号:3658310 上传时间:2023-03-14 格式:DOCX 页数:11 大小:40.28KB
返回 下载 相关 举报
用C语言清空一个文件夹.docx_第1页
第1页 / 共11页
用C语言清空一个文件夹.docx_第2页
第2页 / 共11页
用C语言清空一个文件夹.docx_第3页
第3页 / 共11页
用C语言清空一个文件夹.docx_第4页
第4页 / 共11页
用C语言清空一个文件夹.docx_第5页
第5页 / 共11页
亲,该文档总共11页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《用C语言清空一个文件夹.docx》由会员分享,可在线阅读,更多相关《用C语言清空一个文件夹.docx(11页珍藏版)》请在三一办公上搜索。

1、用C语言清空一个文件夹如何用C语言清空特定文件夹中的所有文件分类: C/C+ 一、准备知识1、WIN32_FIND_DATA数据结构WIN32_FIND_DATA结构描述了一个由FindFirstFile, FindFirstFileEx, 或FindNextFile函数查找到的文件信息。结构内容如下:typedef struct _WIN32_FIND_DATA DWORD dwFileAttributes; /文件属性FILETIME ftCreationTime; / 文件创建时间FILETIME ftLastAccessTime; / 文件最后一次访问时间FILETIME ftLast

2、WriteTime; / 文件最后一次修改时间DWORD nFileSizeHigh; / 文件长度高32位DWORD nFileSizeLow; / 文件长度低32位DWORD dwReserved0; / 系统保留DWORD dwReserved1; / 系统保留TCHAR cFileName MAX_PATH ; / 长文件名TCHAR cAlternateFileName 14 ; / 8.3格式文件名 WIN32_FIND_DATA, *PWIN32_FIND_DATA;2、HANDLE句柄从广义上,能够从一个数值拎起一大堆数据的东西都可以叫做句柄。指针其实也是一种句柄,只是由于指针

3、同时拥有更特殊的含义实实在在地对应内存里地一个地址所以,通常不把指针说成是句柄。但指针也有着能从一个32位的值引用到一大堆数据的作用,这不是句柄又是什么?Windows系统中有许多内核对象,比如打开的文件,创建的线程,程序的窗口,等等。这些重要的对象肯定不是4个字节或者8个字节足以完全描述的,他们拥有大量的属性。为了保存这样一个对象的状态,往往需要上百甚至上千字节的内存空间,那么怎么在程序间或程序内部的子过程之间传递这些数据呢?拖着这成百上千的字节拷贝来拷贝去吗?显然会浪费效率。那么怎么办?当然传递这些对象的首地址是一个办法,但这至少有两个缺点:a、暴露了内核对象本身,使得程序也可以任意地修改

4、对象地内部状态,这显然是操作系统内核所不允许的;b、操作系统有定期整理内存的责任,如果一些内存整理过一次后,对象被搬走了怎么办?所以,Windows操作系统就采用进一步的间接:在进程的地址空间中设一张表,表里头专门保存一些编号和由这个编号对应一个地址,而由那个地址去引用实际的对象,这个编号跟那个地址在数值上没有任何规律性的联系,纯粹是个映射而已。在Windows系统中,这个编号就叫做句柄。Handle在Windows中的含义很广泛,以下关于谈到的Handle除非特别说明,将仅限于进程、线程的上下文中。Handle本身是一个32位的无符号整数,它用来代表一个内核对象。它并不指向实际的内核对象,用

5、户模式下的程序永远不可能获得一个内核对象的实际地址。那么Handle的意义何在?它实际上是作为一个索引在一个表中查找对应的内核对象的实际地址。那么这个表在哪里呢?每个进程都有这样的一个表,叫句柄表。该表的第一项就是进程自己的句柄,这也是为什么你调用GetCurrentProcess总是返回0x7FFFFFFF原因。简单地说,Handle就是一种用来间接代表一个内核对象的整数值。你可以在程序中使用handle来代表你想要操作的内核对象。这里的内核对象包括:事件、线程、进程、Mutex等等。我们最常见的就是文件句柄。3、FindFirstFile函数函数功能:一个文件夹(包括子文件夹)去搜索指定文

6、件函数的参数:a、LPCTSTR lpFileName :文件名b、LPWIN32_FIND_DATA lpFindFileData:数据缓冲区函数的返回值:如果调用成功返回一个句柄,可用来做为FindNextFile函数和FindClose函数的参数。调用失败 返回为INVALID_HANDLE_VALUE(即-1) ,可调用GetLastError函数来获取错误信息。4、FindNextFile函数函数功能:继续查找FindFirstFile函数搜索后的文件函数的参数:a、HANDLE hFindFile:搜索的文件句柄 函数执行的时候搜索的是此句柄的下一文件b、LPWIN32_FIND_

7、DATA lpFindFileData:指向一个用于保存文件信息的结构体函数的返回值:非零表示成功,零表示失败。如不再有与指定条件相符的文件,会将GetLastError设置成ERROR_NO_MORE_FILES5、FindClose函数函数功能:关闭FindFirstFile创建的搜索句柄函数的参数:HANDLE hFindFile:搜索句柄函数的返回值:调用成功 返回一个非0值,失败 返回0 可利用GetLastError来得到错误信息。二、清空特定文件夹中的所有文件#include<iostream>#include<fstream>#include<string&

8、gtusing namespace std;#include<windows.h>#include<shellapi.h>int mainchar *a=.;char *b=;WIN32_FIND_DATA FileData,FileData_0;/创建WIN32_FIND_DATA数据结构对象HANDLE hSearch,hSearch_0;BOOL fFinished=FALSE;hSearch=FindFirstFile(C:Documents and SettingsmingyangDesktopmaps_files*.*,&FileData);if(hSearch=I

9、NVALID_HANDLE_VALUE)cout<<No files found!<<endl;return 0;while(!fFinished)if(FileData.cFileName0!=a0)b=FileData.cFileName;string addr=string(C:Documents and SettingsmingyangDesktopmaps_files)+string(b)+string()+string(*.*);hSearch_0=FindFirstFile(addr.c_str,&FileData_0);while(FindNextFile(hS

10、earch_0, &FileData_0)if(FileData_0.cFileName0!=a0)string addr_0=string(C:Documents and SettingsmingyangDesktopmaps_files)+string(b)+string()+FileData_0.cFileName;DeleteFile(addr_0.c_str);if(!FindNextFile(hSearch,&FileData)if(GetLastError=ERROR_NO_MORE_FILES)fFinished=TRUE;elseprintf(Couldnt find nex

11、t file.);return 0;FindClose(hSearch);FindClose(hSearch_0);return 0;接下来创建文件夹:函数名: mkdir 功 能: 建立一个目录(文件夹) 用 法: int mkdir(char *pathname); 程序例: #include <stdio.h> #include <process.h> #include <dir.h> int main(void) int status; system(cls); status = mkdir(book); /*这是在程序所在当前文件夹下创建book*/ (!st

12、atus) ? (printf(Directory createdn) : (printf(Unable to create directoryn); system(pause); system(dir); /*显示创建后当前文件夹下的文件信息*/ system(pause); status = rmdir(book); /*删除创建的文件夹book*/ (!status) ? (printf(Directory deletedn) : (perror(Unable to delete directory); system(pause); return 0; 然后创建文件:热心网友用fopen

13、时指明具体的文件夹就可以了。fp=fopen(c:windowsa.c,w);这样,如果c:windows目录下没有a.c,就会新建。清空IE自定义按钮:浏览器IE是我们使用频率最高的软件之一,如果能将应用程序集成到IE中,必将极大地方便用户的操作以及提高软件的附加值。幸好Microsoft已为我们提供了相应的接口,这使得我们的工作变得简单而有趣。一、系统分析通过对注册表的分析、对比,可以发现,IE工具栏按钮的设置在注册表的位置:HKEY_LOCAL_MACHINESOFTWAREMICROSOFTINTERNET EXPLOREREXTENSIONS这样我们就可以通过以下的步骤来实现我们的目

14、标:向IE工具栏中添加按钮1 在上述路径下添加一个主键,键名任意,比如设置为:5D13E8D2-850A-101B-ARC0-4210102A8DA7;2 在上述主键下添加以下几个字符串:n BUTTONTEXT:按钮显示文本n CLSID:标识符,必须设置为:1FBA04EE-3024-11D2-8F1F-0000F87ABD16n DEFAULT VISIBLE:设置按钮是否被显示出来n EXEC:单击按钮后要调用应用程序n ICON:按钮图标n HOTICON:按钮的浮动图标二、设计流程TRegistry rg = new TRegistry;rg->RootKey = HKEY_L

15、OCAL_MACHINE;rg->OpenKey(“SOFTWAREMICROSOFTINTERNET EXPLOREREXTENSIONS5D13E8D2-850A-101B-ARC0-4210102A8DA7”,true);rg->WriteString(“BUTTONTEXT”,”按钮名称”);rg->WriteString(“CLSID”,”1FBA04EE-3024-11D2-8F1F-0000F87ABD16”);rg->WriteString(“DEFAULT VISIBLE”,”YES”);rg->WriteString(“EXEC”,”应用程序路径”);rg->WriteString(”ICON”,”图标路径”);rg->WriteString(“HOTICON”,”浮动图标路径”);rg->CloseKey;delete rg;

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号