中国IT动力,最新最全的IT技术教程
最新100篇 | 推荐100篇 | 专题100篇 | 排行榜 | 搜索 | 在线API文档
首 页 | 程序开发 | 操作系统 | 软件应用 | 图形图象 | 网络应用 | 精文荟萃 | 教育认证 | 硬件维护 | 未整理篇 | 站长教程
ASP JS PHP工程 ASP.NET 网站建设 UML J2EESUN .NET VC VB VFP 网络维护 数据库 DB2 SQL2000 Oracle Mysql
服务器 Win2000 Office C DreamWeaver FireWorks Flash PhotoShop 上网宝典 CorelDraw 协议大全 网络安全 微软认证
硬件维护  CPU  主板  硬盘  内存  显卡  显示器  键盘鼠标  声卡音箱  打印机  机箱电源  BIOS  网卡  C#  Java  Delphi  vs.net2005
  当前位置:> 程序开发 > 编程语言 > Visual C++ > 文件系统
自动查找并删除VC生成的临时文件
作者:未知 时间:2005-07-20 14:21 出处:VC知识库 责编:chinaitpower
              摘要:自动查找并删除VC生成的临时文件

自动查找并删除VC生成的临时文件

作者:邓子国

下载源代码

关键字:临时文件 通配符 递归 查找文件 文件夹选择对话框 INI文件

  VC产生的临时文件有时真的很烦人!当你编译一个程序,突然系统弹出一个对话框:“D盘已经没有足够的空间~~~~~~~~~请问需要进行磁盘清理吗”,而它只能清掉了Nkb的东东,你有什么理由不自己写一个专门清理VC垃圾的小工具呢?隔一段时间运行一次,彻底清除指定类型的垃圾文件:干干净净,中国人,奇强!
  很明显,这个程序的核心代码肯定是一个有通配符的功能的递归查找文件的函数。我的想法是先查找给定目录下的所有符合条件的文件,再递归查找下级文件夹下所有符合条件的文件。为了保证其封闭性,我用了一个 CStringList& 变量来保存搜索结果。如果您有好的建议,请给我发邮件。下面是代码:

CStringList& CDelTempDlg::SearchFile(CString strFileName, 
                                     CString strPath, 
                                     CStringList &listFileName) 
{ 
	char szFullPathName[MAX_PATH]; 
	/*static*/ WIN32_FIND_DATA findData; 
	
	SetCurrentDirectory(strPath); 
	
	HANDLE hFindHandle = FindFirstFile(strFileName, &findData); 

	if ((hFindHandle != INVALID_HANDLE_VALUE)) 
	{ 
		if (!(findData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)) 
		{ 
			GetFullPathName(findData.cFileName, 
			                MAX_PATH, 
			                szFullPathName, 
			                NULL); 
			                
			listFileName.AddTail(szFullPathName); 
		} 
		while (FindNextFile(hFindHandle, &findData) != 0) 
		{ 
			if (!(findData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)) 
			{ 
				GetFullPathName(findData.cFileName, 
				                MAX_PATH, 
				                szFullPathName, 
				                NULL); 
				                
				listFileName.AddTail(szFullPathName); 
			} 
		} 
		FindClose(hFindHandle); 
	} 
	
	hFindHandle = FindFirstFile(\"*\", &findData); 
		if ((hFindHandle != INVALID_HANDLE_VALUE)) 
		{ 
			if (findData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) 
			{ 
				if (findData.cFileName[0] != \''.\'') 
				{ 
					SearchFile(strFileName, 
					           findData.cFileName, 
					           listFileName); 
					           
					SetCurrentDirectory(\"..\"); 
				} 
			}
			
			while (FindNextFile(hFindHandle, &findData) != 0) 
			{ 
				if (findData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) 
				{ 
					if (findData.cFileName[0] != \''.\'') 
					{ 
						SearchFile(strFileName, 
						           findData.cFileName, 
						           listFileName); 
						           
						SetCurrentDirectory(\"..\"); 
					} 
				} 
			} 
			FindClose(hFindHandle); 
		} 
		
		return listFileName; 
}      
  另外,程序中还用到了 SHBrowseForFolder、SHGetPathFromIDList 两个API函数来打开文件夹选择的对话框,GetProvateProfileInt、Get(/Write)PrivateProfileString、WritePrivateProfileSection 等函数以方便用户自定义文件类型。因为程序比较简单,里面的一些错误信息显示也就没有单独抽象出来。不提倡读者这样写,呵呵。

程序在VC6.0、Win2000Pro下编译通过。 点击下载全部源代码
关闭本页
 
首页 | 投资与合作 | 服务条款 | 隐私政策 | 收藏本站 | 设为首页 | 新用户注册 | 免责声明 | 使用帮助
Copyright ©2005-2008 chinaitpower.com All rights reserved. www.chinaitpower.com 版权所有