MSDN.WhiteKnight - Stack Overflow answers
Ответ на "папка это файл?"
Answer 1175545
Папка является файлом, в том смысле, что она тоже является блоком информации, к которому можно получить доступ по его имени в файловой системе; и некоторые функции для работы с файлами могут оперировать и папками. Это справедливо практически для всех современных ОС. В структуре NTFS папка также представлена файлом, только, в отличие от обычного файла, она как правило не имеет атрибута $DATA, но имеет атрибут $INDEX_ROOT.
Как работает функция _open в Microsoft CRT можно прочитать здесь. Открыть папку с ее помощью в Windows вы не сможете, потому что она не позволяет задать дополнительные флаги и поэтому с ее помощью можно открыть только обычные файлы. Открыть папку можно с помощью функции CreateFile, передавая флаг FILE_FLAG_BACKUP_SEMANTICS. Но напрямую читать байты из папки, как из файла, нельзя: список функций, которые работают с папками, приведен здесь. Например, так можно получить время создания папки:
#define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <Windows.h> int main() { HANDLE h = CreateFileW(L"c:\\Test\\", GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_FLAG_BACKUP_SEMANTICS, NULL ); BY_HANDLE_FILE_INFORMATION info; SYSTEMTIME st; SYSTEMTIME stLocal; if (GetFileInformationByHandle(h, &info) == FALSE) { printf("GetFileInformationByHandle Error\n"); } else { FileTimeToSystemTime(&info.ftCreationTime, &st); SystemTimeToTzSpecificLocalTime(NULL, &st, &stLocal); printf( "Creation Time: %02u.%02u.%u %02u:%02u\n", (UINT)stLocal.wDay, (UINT)stLocal.wMonth, (UINT)stLocal.wYear, (UINT)stLocal.wHour, (UINT)stLocal.wMinute ); } getchar(); }
Content is retrieved from StackExchange API.
Auto-generated by ruso-archive tools.