如何检查文件夹或文件是否隐藏=
问题描述:
我想知道文件或目录是否隐藏。如何检查文件夹或文件是否隐藏=
起初我使用了CFile :: GetStatus(),但是我发现这个API有时会返回FALSE。
我不知道为什么,所以我写了下面的代码,但是我发现它并不稳定。我的代码有什么问题?
BOOL IsHide(const CString& strPath, BOOL& bIsHide)
{
if (strPath.GetLength() <= 3)
{
bIsHide = FALSE;
return TRUE;
}
bIsHide = FALSE;
HANDLE hFile = CreateFile(strPath, 0, FILE_SHARE_READ,
NULL, OPEN_EXISTING, FILE_FLAG_BACKUP_SEMANTICS,
NULL);
if (hFile == INVALID_HANDLE_VALUE)
{
ASSERT(FALSE);
return FALSE;
}
BY_HANDLE_FILE_INFORMATION fiBuf;
GetFileInformationByHandle(hFile, &fiBuf);
CloseHandle(hFile);
WORD isHide = (fiBuf.dwFileAttributes) | FILE_ATTRIBUTE_HIDDEN;
if (isHide == fiBuf.dwFileAttributes)
{
bIsHide = TRUE;
}
else
{
bIsHide = FALSE;
}
return TRUE;
}