Вопрос № 49070: Здравствуйте. Подскажите, как имея хэндл (получен с помощью FindFirstFile и FindNextFile) файла узнать является ли он каталогом?...
Вопрос № 49.070
Здравствуйте. Подскажите, как имея хэндл (получен с помощью FindFirstFile и FindNextFile) файла узнать является ли он каталогом?
Отправлен: 13.07.2006, 23:23
Вопрос задал: Sova (статус: Посетитель)
Всего ответов: 3 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: Physicist
Здравствуйте, Sova!
Если cFileName - это каталог, то GetFileAttributes(cFileName) вернет значение с установленным флагом FILE_ATTRIBUTE_DIRECTORY.
Пример:
WIN32_FIND_DATA fd;
HANDLE hFile=FindFirstFile(lpPathFileName,&fd);
do
{
if(GetFileAttributes(fd.cFileName) & FILE_ATTRIBUTE_DIRECTORY)
{//TODO
}
} while FindNextFile(hFindFile,&fd);
Ответ отправил: Physicist (статус: 4-ый класс)
Ответ отправлен: 13.07.2006, 23:38 Оценка за ответ: 5
Отвечает: Алексей Смуриков
Здравствуйте, Sova!
Вовсе необязательно использовать:
if(GetFileAttributes(fd.cFileName) & FILE_ATTRIBUTE_DIRECTORY)
можно просто так:
if(fd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
--------- Speccy Rulezz!!!
Ответ отправил: Алексей Смуриков (статус: Практикант)
Ответ отправлен: 14.07.2006, 06:16 Оценка за ответ: 5
Отвечает: Uamen
Здравствуйте, Sova!Дізнатися чи хендел є каталогом можна за допомогою функції GetFileInformationByHandle.
Наприклад:
HANDLE hFile;
BY_HANDLE_FILE_INFORMATION bhfi;
...
GetFileInformationByHandle(hFile, &bhfi);
if(bhfi.dwFileAttributes &= FILE_ATTRIBUTE_DIRECTORY)
cout << "This is directory";
Також можна дізнатися з самої функції FindFirstFile:
HANDLE hFile;
WIN32_FIND_DATA wfd;
hFile = FindFirstFile("C:\",&wfd);
if(wfd.dwFileAttributes &= FILE_ATTRIBUTE_DIRECTORY)
cout << "This is directory";
Ответ отправил: Uamen (статус: 1-ый класс)
Ответ отправлен: 15.07.2006, 00:31