VC++使用SetFileAttributes隐藏和设置文件只读属性

需积分: 13 3 下载量 79 浏览量 更新于2024-09-08 收藏 992KB PDF 举报
"这篇文章主要介绍了在VC++环境下如何操作文件属性,包括隐藏和只读设置,以及文件的创建时间等信息。文中提到了两种遍历文件夹的方法,并给出了相关的代码示例。" 在VC++编程中,我们经常需要对文件进行各种操作,包括设置其属性。其中,`SetFileAttributes`函数是Windows API提供的一种用于修改文件属性的工具。在这个场景中,`SetFileAttributes`函数被用来将文件设置为隐藏和只读状态。函数的基本调用格式如下: ```cpp BOOL SetFileAttributes( _In_ LPCTSTR lpFileName, _In_ DWORD dwFileAttributes ); ``` 这里的`lpFilePath`参数是你想要操作的文件路径,`FileAttr`变量应该包含你要设置的文件属性。在描述中提到的代码`SetFileAttributes(m_filepath, FileAttr | FILE_ATTRIBUTE_HIDDEN);`,`FILE_ATTRIBUTE_HIDDEN`是一个常量,表示文件的隐藏属性。`FileAttr`可能还包含了其他的文件属性,如`FILE_ATTRIBUTE_READONLY`表示只读属性。通过使用按位或运算符`|`,你可以同时设置多个属性。 除了隐藏和只读属性外,文件还有其他一些重要的属性,例如: - `FILE_ATTRIBUTE_SYSTEM`: 表示系统文件。 - `FILE_ATTRIBUTE_ARCHIVE`: 表示归档文件,通常用于备份目的。 - `FILE_ATTRIBUTE_NORMAL`: 表示普通文件,没有特殊属性。 - `FILE_ATTRIBUTE_TEMPORARY`: 表示临时文件,操作系统可能不会将其写入磁盘。 在文件操作中,我们也常常关心文件的创建时间、最后访问时间和最后修改时间。这些信息可以通过`GetFileTime`函数获取,或者在创建或修改文件时使用`SetFileTime`函数来设置。 对于遍历文件夹,文章中提到了两种方法。第一种是使用传统的WinAPI函数`FindFirstFile`、`FindNextFile`和`FindClose`的组合,它们可以迭代指定路径下的所有文件和子文件夹。第二种方法是利用MFC的`CFileFind`类,这个类提供了一种更简便的方式来查找和遍历文件。以下是一个使用`CFileFind`的简单示例: ```cpp CFileFind finder; LPCTSTR szWildCard = _T("*.txt"); // 搜索所有的.txt文件 BOOL bFound = finder.FindFile(szWildCard); while (bFound) { bFound = finder.FindNextFile(); if (!finder.IsDots()) { // 处理找到的文件或目录 } } finder.Close(); ``` VC++提供了丰富的API和类库来处理文件操作,包括文件属性的设置和文件夹的遍历。正确理解和使用这些功能可以帮助开发者实现各种复杂的文件系统任务。