//判断该目录是否存在
HANDLE hDir = ::CreateFile(strFolderPath, GENERIC_READ, FILE_SHARE_READ,
NULL, OPEN_EXISTING, FILE_FLAG_BACKUP_SEMANTICS, NULL);
if (INVALID_HANDLE_VALUE == hDir)
{
AfxMessageBox(_T("不存在的路径"));
}
else
{
CloseHandle(hDir);
ListFilesAndFolders(strFolderPath);
}
最重要的是要指定FILE_FLAG_BACKUP_SEMANTICS标识:
An application cannot create a directory by using CreateFile. The application must call CreateDirectory or CreateDirectoryEx to create a directory. To open a directory by using CreateFile, use the FILE_FLAG_BACKUP_SEMANTICS flag.
When using CreateFile to open a directory during defragmentation of a FAT or FAT32 file system volume, do not specify the MAXIMUM_ALLOWED access right. Access to the directory is denied if this is done. Specify the GENERIC_READ access right instead.
2012-4-17更新:
BOOL PathIsDirectory( LPCTSTR pszPath
);
BOOL PathIsDirectoryEmpty( LPCTSTR pszPath
);