フリーソフト

« [BCB] Formを半透明にする | トップページ | アイコン・カーソル リソースについて »

[BCB] ファイルのタイムスタンプ(更新日時など)を取得

ファイルの「作成日時」「更新日時」「アクセス日時」を取得する方法です。手順は
1.ファイルをオープン (CreateFile)
2.ファイルタイムを取得 (GetFileTime)
3.取得したファイルタイム(UTC)をローカルタイムに変換 (FileTimeToLocalFileTime)
4.ローカルファイルタイムをシステムタイムに変換 (FileTimeToSystemTime)
5.システムタイムをTDateTime型に変換 (SystemTimeToDateTime)
6.ファイルをクローズ (CloseHandle)
となります。

  HANDLE hFile;
  FILETIME FtCreationTime,FtLastAccessTime,FtLastWriteTime;
  FILETIME LftCreationTime,LftLastAccessTime,LftLastWriteTime;
  SYSTEMTIME StCreationTime,StLastAccessTime,StLastWriteTime;

  hFile = CreateFile(Filename.c_str() , GENERIC_READ , 0 , NULL ,
  OPEN_EXISTING , FILE_ATTRIBUTE_NORMAL , NULL);
  if (hFile != INVALID_HANDLE_VALUE) {
    GetFileTime(hFile,&FtCreationTime,&FtLastAccessTime,&FtLastWriteTime);

    FileTimeToLocalFileTime(&FtCreationTime,&LftCreationTime);
    FileTimeToSystemTime(&LftCreationTime ,&StCreationTime);
    Edit1->Text=FormatDateTime("yyyy/mm/dd hh:nn:ss",SystemTimeToDateTime(StCreationTime));

    FileTimeToLocalFileTime(&FtLastAccessTime ,&LftLastAccessTime);
    FileTimeToSystemTime(&LftLastAccessTime ,&StLastAccessTime);
    Edit2->Text=FormatDateTime("yyyy/mm/dd hh:nn:ss",SystemTimeToDateTime(StLastAccessTime));

    FileTimeToLocalFileTime(&FtLastWriteTime ,&LftLastWriteTime);
    FileTimeToSystemTime(&LftLastWriteTime ,&StLastWriteTime);
    Edit3->Text=FormatDateTime("yyyy/mm/dd hh:nn:ss",SystemTimeToDateTime(StLastWriteTime));
  }
  CloseHandle(hFile);


関連項目:
 ・世界協定時刻(UTC)をローカルタイムに変換
 ・TSystemTime(_SYSTEMTIME)とTDateTimeの変換

« [BCB] Formを半透明にする | トップページ | アイコン・カーソル リソースについて »

C++Builder」カテゴリの記事

ファイル、フォルダの処理」カテゴリの記事