ファイル情報の表示(C言語)
キーワード:
CreateFile, GetFileInformationByHandle, FileTimeToLocalFileTime, FileTimeToSystemTime, CloseHandle
コード:
void DoGetFileInfoByHandle()
{
HANDLE hFile;
BY_HANDLE_FILE_INFORMATION fi;
FILETIME ft;
hFile = CreateFile(
"c:\\command.com",
0,
FILE_SHARE_READ | FILE_SHARE_WRITE,
NULL,
OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL,
NULL);
GetFileInformationByHandle(hFile, &fi);
printf("属性:\n");
if(fi.dwFileAttributes & FILE_ATTRIBUTE_ARCHIVE) printf("アーカイブ\n");
if(fi.dwFileAttributes & FILE_ATTRIBUTE_COMPRESSED) printf("圧縮\n");
if(fi.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) printf("ディレクトリ\n");
if(fi.dwFileAttributes & FILE_ATTRIBUTE_HIDDEN) printf("隠しファイル/ディレクトリ\n");
if(fi.dwFileAttributes & FILE_ATTRIBUTE_NORMAL) printf("ノーマル\n");
if(fi.dwFileAttributes & FILE_ATTRIBUTE_READONLY) printf("書込み禁止\n");
if(fi.dwFileAttributes & FILE_ATTRIBUTE_SYSTEM) printf("システム\n");
if(fi.dwFileAttributes & FILE_ATTRIBUTE_TEMPORARY) printf("一時ファイル/ディレクトリ\n");
FileTimeToLocalFileTime(&fi.ftCreationTime, &ft);
FileTimeToSystemTime(&ft, &st);
printf("作成時刻: %04d/%02d/%02d %02d:%02d:%02d.%d\n",
st.wYear, st.wMonth, st.wDay,
st.wHour, st.wMinute, st.wSecond, st.wMilliseconds);
FileTimeToLocalFileTime(&fi.ftLastAccessTime, &ft);
FileTimeToSystemTime(&ft, &st);
printf("最終アクセス時刻: %04d/%02d/%02d %02d:%02d:%02d.%d\n",
st.wYear, st.wMonth, st.wDay,
st.wHour, st.wMinute, st.wSecond, st.wMilliseconds);
FileTimeToLocalFileTime(&fi.ftLastWriteTime, &ft);
FileTimeToSystemTime(&ft, &st);
printf("最終書き込み時刻: %04d/%02d/%02d %02d:%02d:%02d.%d\n",
st.wYear, st.wMonth, st.wDay,
st.wHour, st.wMinute, st.wSecond, st.wMilliseconds);
printf("ボリュームのシリアルナンバー: %ud\n", fi.dwVolumeSerialNumber);
printf("ファイルサイズ: %ud*2^32+%ud\n", fi.nFileSizeHigh, fi.nFileSizeLow);
printf("リンク数: %d\n", fi.nNumberOfLinks);
printf("ファイルID: %08X%08X", fi.nFileIndexHigh, fi.nFileIndexLow);
CloseHandle(hFile);
}
(original text:1998/05/12 更新)
本ドキュメントの内容は保証しません。本ドキュメントによって生じた結果について、一切の責任を負いません。