Win32API ファイルの情報を取得する GetFileInformationByHandle
ファイルの情報を取得する
使用するAPI
//ファイル情報を取得し、コンソールに表示する #include <windows.h> void PrintFileTimeByLocalTime(const FILETIME *lpFileTime, const char *lpTitle) { FILETIME localFileTime; SYSTEMTIME systemTime; static char *dayOfWeek[] = {"Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"}; FileTimeToLocalFileTime(lpFileTime, &localFileTime); FileTimeToSystemTime(&localFileTime, &systemTime); printf("%s = ", lpTitle); printf("%04d/%02d/%02d %02d:%02d:%02d.%03d (%s)\n", systemTime.wYear, systemTime.wMonth, systemTime.wDay, systemTime.wHour, systemTime.wMinute, systemTime.wSecond, systemTime.wMilliseconds, dayOfWeek[systemTime.wDayOfWeek]); } void PrintFileAttributes(DWORD dwAttributes) { printf("FileAttributes = "); if (dwAttributes & FILE_ATTRIBUTE_ARCHIVE) { printf("Archive "); } if (dwAttributes & FILE_ATTRIBUTE_DIRECTORY) { printf("Directory "); } if (dwAttributes & FILE_ATTRIBUTE_HIDDEN) { printf("Hidden "); } if (dwAttributes & FILE_ATTRIBUTE_NORMAL) { printf("Normal "); } if (dwAttributes & FILE_ATTRIBUTE_READONLY) { printf("Readonly "); } if (dwAttributes & FILE_ATTRIBUTE_SYSTEM) { printf("System "); } if (dwAttributes & FILE_ATTRIBUTE_TEMPORARY) { printf("Temporary "); } putc('\n', stdout); } int main() { HANDLE hFile; BY_HANDLE_FILE_INFORMATION fileInformation; char *lpFileName = "test.txt"; hFile = CreateFile(lpFileName, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL); if (hFile == INVALID_HANDLE_VALUE) { printf("CreateFile failed\n"); return 1; } GetFileInformationByHandle(hFile, &fileInformation); CloseHandle(hFile); //FileTimes PrintFileTimeByLocalTime( &fileInformation.ftCreationTime, "CreationTime"); PrintFileTimeByLocalTime( &fileInformation.ftLastAccessTime, "LastAccessTime"); PrintFileTimeByLocalTime( &fileInformation.ftLastWriteTime, "LastWriteTime"); //FileAttributes PrintFileAttributes(fileInformation.dwFileAttributes); //VolumeSerialNumber printf("VolumeSerialNumber = %u\n", fileInformation.dwVolumeSerialNumber); //FileSize printf("FileSizeLow = %u, FileSizeHigh = %u\n", fileInformation.nFileSizeLow, fileInformation.nFileIndexHigh); //FileIndex printf("FileIndexLow = %u, FileIndexHigh = %u\n", fileInformation.nFileIndexLow, fileInformation.nFileIndexHigh); //NumberOfLinks printf("NumberOfLinks = %u\n", fileInformation.nNumberOfLinks); return 0; }