CFileManip:“类DOS命令”文件/目录操作






4.88/5 (11投票s)
2002 年 7 月 29 日
3分钟阅读

179725

3255
一个允许快速简便进行文件/目录操作的类
引言
和许多人一样,我在DOS 6.x是主流操作系统的时候开始使用计算机,我已经非常习惯它了,以至于现在将近十年过去了,我仍然清晰地记得那些DOS命令,仿佛昨天还在输入它们。我在我的程序中大量进行文件/目录操作,每次我想将一个目录(包括所有文件和嵌套的子目录)复制或删除到/从客户的磁盘时,我就会想起那些DOS命令,比如“xcopy”、“deltree”。当然,这些都可以通过API调用来实现,但如果有一个类能用一行代码就完成这些事情,难道不更方便吗?如果这个类的成员函数看起来像DOS命令,那岂不是更酷?
CFileManip
是一个API封装类,旨在使文件操作更简单、更容易。该类本身主要提供了“类DOS命令”的方法,这些方法在名称和功能上都与相关的DOS命令非常相似,我希望它们能带你回到DOS时代的黄金时光。:-)能够在我的C++代码中使用“xcopy”和“deltree”这样的函数是我一直想要的。
在漫长的任务过程中会自动提供进度窗口。该类不需要MFC,因此可以在任何Win32应用程序中使用。
类成员方法
// File-only operations static BOOL Copy(LPCTSTR lpSource, LPCTSTR lpDestination, BOOL bHidePrompt = TRUE); static BOOL Del(LPCTSTR lpSource, BOOL bHidePrompt = TRUE); static BOOL Ren(LPCTSTR lpSource, LPCTSTR lpDestination, BOOL bHidePrompt = TRUE);参数
lpSource:指定源目标的以null结尾的字符串。允许使用通配符。
lpDestination:指定目标路径的以null结尾的字符串。
bHidePrompt:如果设置为TRUE,则不会显示任何提示或确认消息窗口,否则在各种情况下可能会出现这些消息窗口。
返回值
如果操作成功,则返回TRUE,否则返回FALSE。
备注
顾名思义,它们执行DOS命令“copy”(复制文件)、“del”(删除文件)和“ren”(重命名文件)所做的事情。这些是仅限文件的操作,不允许任何方法修改目录。
// File/directory operations static BOOL XCopy(LPCTSTR lpSource, LPCTSTR lpDestination, BOOL bHidePrompt = TRUE); static BOOL DelTree(LPCTSTR lpSource, BOOL bHidePrompt = TRUE); static BOOL Move(LPCTSTR lpSource, LPCTSTR lpDestination, BOOL bHidePrompt = TRUE);
参数
lpSource:指定源目标的以null结尾的字符串。允许使用通配符。
lpDestination:指定目标路径的以null结尾的字符串。
bHidePrompt:如果设置为TRUE,则不会显示任何提示或确认消息窗口,否则在各种情况下可能会出现这些消息窗口。
返回值
如果操作成功,则返回TRUE,否则返回FALSE。
备注
顾名思义,它们执行DOS命令“xcopy”(将文件或目录(包括子目录)复制到目标路径,并继承所有属性和子目录结构)、“deltree”(删除文件或目录(包括子目录))和“move”(将文件或目录移动到目标路径)所做的事情。这些方法可以修改文件和目录。
// Directory-only operations static BOOL MkDir(LPCTSTR lpDirectory); static BOOL RmDir(LPCTSTR lpDirectory);
参数
lpDirectory:指定目录名称的以null结尾的字符串。
返回值
如果操作成功,则返回TRUE,否则返回FALSE。
备注
简单的API调用。顾名思义,它们执行DOS命令“mkdir”(创建空目录)、“rmdir”(删除空目录)。这些操作不能修改文件。
// File/directory attributes access static BOOL SetAttribute(LPCTSTR lpSource, DWORD dwNewAttr); static DWORD GetAttribute(LPCTSTR lpSource);
参数
lpSource:指定源目标的以null结尾的字符串。
dwNewAttr:一个DWORD值,表示要分配给源目标的新属性。有关属性值的完整列表,请参阅MSDN“Platform SDK: Files and I/O: SetFileAttributes”。
返回值SetAttribute
如果操作成功,则返回TRUE,否则返回FALSE。GetAttribute
返回一个DWORD值,表示源目标的属性。有关属性值的完整列表,请参阅MSDN“Platform SDK: Files and I/O: GetFileAttributes”。
备注
设置和获取文件或目录的属性。
// File/directory existence check enum { FM_NOTEXIST = 0, FM_DIRECTORY, FM_FILE}; static int Existence(LPCTSTR lpSource);
参数
lpSource:指定源目标的以null结尾的字符串。
返回值
返回值可以是以下之一:
FM_NOTEXIST:目标不存在。
FM_DIRECTORY:目标是一个现有目录。
FM_FILE:目标是一个现有文件。
备注
检查给定目标的有效性。
// Directory travelling static BOOL CdDotDot(LPTSTR lpCurDirectory = NULL);
参数
lpCurDirectory:在本次操作后将接收当前目录完整路径的以null结尾的字符串。
返回值
如果当前目录是驱动器的根目录,则返回FALSE,否则返回TRUE。
备注
此函数的作用与DOS命令“cd..”完全相同,即在目录树结构中将当前目录向上(朝向根目录)移动一个级别。在调用CdDotDot
之前和之后调用::GetCurrentDirectory
将显示差异。
历史
2002年8月3日 - 更新了下载。
2003年2月12日 - 该类已符合UNICODE标准。
2003年2月23日 - 从源代码中删除了某些不必要的代码。