WIN32_FIND_DATA 结构数据中有一项为 dwFileAttributes,它记录着文件(夹)的属性 typedef struct _WIN32_FIND_DATA { DWORD dwFileAttributes; FILETIME ftCreationTime; FILETIME ftLastAccessTime; FILETIME ftLastWriteTime; DWORD nFileSizeHigh; DWORD nFileSizeLow; DWORD dwReserved0; DWORD dwReserved1; TCHAR cFileName[ MAX_PATH ]; TCHAR cAlternateFileName[ 14 ]; } WIN32_FIND_DATA, *PWIN32_FIND_DATA; FILE_ATTRIBUTE_ARCHIVE The file or directory is an archive file or directory. Applications use this attribute to files for backup or removal.
FILE_ATTRIBUTE_COMPRESSED The file or directory is compressed. For a file, this means that all of the data in the file is compressed. For a directory, this means that compression is the default for newly created files and subdirectories. FILE_ATTRIBUTE_DIRECTORY The handle identifies a directory. FILE_ATTRIBUTE_ENCRYPTED The file or directory is encrypted. For a file, this means that all data in the file is encrypted. For a directory, this means that encryption is the default for newly created files and subdirectories. FILE_ATTRIBUTE_HIDDEN The file or directory is hidden. It is not included in an ordinary directory listing. FILE_ATTRIBUTE_NORMAL The file or directory has no other attributes set. This attribute is valid only if used alone. FILE_ATTRIBUTE_OFFLINE The file data is not immediately available. This attribute indicates that the file data has been physically moved to offline storage. This attribute is used by Remote Storage, the hierarchical storage management software in Windows 2000. Applications should not arbitrarily change this attribute. FILE_ATTRIBUTE_READONLY The file or directory is read-only. Applications can read the file but cannot write to it or delete it. In the case of a directory, applications cannot delete it. FILE_ATTRIBUTE_REPARSE_POINT The file has an associated reparse point. FILE_ATTRIBUTE_SPARSE_FILE The file is a sparse file. FILE_ATTRIBUTE_SYSTEM The file or directory is part of the operating system or is used exclusively by the operating system. FILE_ATTRIBUTE_TEMPORARY The file is being used for temporary storage. File systems attempt to keep all of the data in memory for quicker access, rather than flushing it back to mass storage. A temporary file should be deleted by the application as soon as it is no longer needed. 但是你不能简单地用一般的判断语句来确认“文件”和“文件夹”,因为一个文件或文件夹都有可能“同时”包含“多种”属性,并且它们的组合方式是“按位或”----也就是“|”操作。 所以你应该这样: HANDLE hFind; WIN32_FIND_DATA dataFind; BOOL bMoreFiles = TRUE;//Find the first file in the main directory hFind = FindFirstFile(m_strMainDir + "\\*.*",&dataFind); //Find the loop until all files have been found while(hFind != INVALID_HANDLE_VALUE && bMoreFiles == TRUE) { if((dataFind.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) == \ FILE_ATTRIBUTE_DIRECTORY) //Must be the directory { //Ignore the "." and ".." directory entries if(strcmp(dataFind.cFileName,".")) { if(strcmp(dataFind.cFileName,"..")) //你的操作 } } bMoreFiles = FindNextFile(hFind,&dataFind); } //close the handle FindClose(hFind);同理文件(或查找指定的文件属性)也这样
HANDLE nHandle = ::FindFirstFile( "*.*", &findFile );
do
{
if ( ( findFile.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY )
{
目录
}
else
{
文件
}
}
while( ::FindNextFile( nHandle, &findFile ) );
typedef struct _WIN32_FIND_DATA {
DWORD dwFileAttributes;
FILETIME ftCreationTime;
FILETIME ftLastAccessTime;
FILETIME ftLastWriteTime;
DWORD nFileSizeHigh;
DWORD nFileSizeLow;
DWORD dwReserved0;
DWORD dwReserved1;
TCHAR cFileName[ MAX_PATH ];
TCHAR cAlternateFileName[ 14 ];
} WIN32_FIND_DATA, *PWIN32_FIND_DATA; FILE_ATTRIBUTE_ARCHIVE The file or directory is an archive file or directory. Applications use this attribute to files for backup or removal.
FILE_ATTRIBUTE_COMPRESSED The file or directory is compressed. For a file, this means that all of the data in the file is compressed. For a directory, this means that compression is the default for newly created files and subdirectories. FILE_ATTRIBUTE_DIRECTORY The handle identifies a directory. FILE_ATTRIBUTE_ENCRYPTED The file or directory is encrypted. For a file, this means that all data in the file is encrypted. For a directory, this means that encryption is the default for newly created files and subdirectories. FILE_ATTRIBUTE_HIDDEN The file or directory is hidden. It is not included in an ordinary directory listing. FILE_ATTRIBUTE_NORMAL The file or directory has no other attributes set. This attribute is valid only if used alone. FILE_ATTRIBUTE_OFFLINE The file data is not immediately available. This attribute indicates that the file data has been physically moved to offline storage. This attribute is used by Remote Storage, the hierarchical storage management software in Windows 2000. Applications should not arbitrarily change this attribute. FILE_ATTRIBUTE_READONLY The file or directory is read-only. Applications can read the file but cannot write to it or delete it. In the case of a directory, applications cannot delete it. FILE_ATTRIBUTE_REPARSE_POINT The file has an associated reparse point. FILE_ATTRIBUTE_SPARSE_FILE The file is a sparse file. FILE_ATTRIBUTE_SYSTEM The file or directory is part of the
operating system or is used exclusively by the operating system. FILE_ATTRIBUTE_TEMPORARY The file is being used for temporary storage. File systems attempt to keep all of the data in memory for quicker access, rather than flushing it back to mass storage. A temporary file should be deleted by the application as soon as it is no longer needed. 但是你不能简单地用一般的判断语句来确认“文件”和“文件夹”,因为一个文件或文件夹都有可能“同时”包含“多种”属性,并且它们的组合方式是“按位或”----也就是“|”操作。
所以你应该这样:
HANDLE hFind;
WIN32_FIND_DATA dataFind;
BOOL bMoreFiles = TRUE;//Find the first file in the main directory
hFind = FindFirstFile(m_strMainDir + "\\*.*",&dataFind);
//Find the loop until all files have been found
while(hFind != INVALID_HANDLE_VALUE && bMoreFiles == TRUE)
{
if((dataFind.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) == \ FILE_ATTRIBUTE_DIRECTORY) //Must be the directory
{
//Ignore the "." and ".." directory entries
if(strcmp(dataFind.cFileName,"."))
{
if(strcmp(dataFind.cFileName,".."))
//你的操作
}
}
bMoreFiles = FindNextFile(hFind,&dataFind);
}
//close the handle
FindClose(hFind);同理文件(或查找指定的文件属性)也这样
还有,你运气不错,我正好这几天在做“和查找文件(夹))有关的事,所以稍微研究了一下:)
还有,你运气不错,我正好这几天在做“和查找文件(夹))有关的事,所以稍微研究了一下:)