ファイル情報を取得する方法




ファイルの属性・ファイル作成日時・最終アクセス日時・最終更新日時・ ファイルサイズの上位32ビット・ファイルサイズの下位32ビット情報を 取得する方法です。

(サンプル)
    WIN32_FILE_ATTRIBUTE_DATA Wk_FileInfo;    // ファイル情報構造体 
    // 再表示モードがリサイズ以外ならファイル情報をチェックする
    if( RedrawMode != D_REDRAW_RESIZE )
    {
        // ファイル情報の取得
        Bool_Ret = GetFileAttributesEx( E_ReadFileName, GetFileExInfoStandard, &Wk_FileInfo );
        // ファイル更新状態チェック
        if( 0 == (memcmp( &E_FileInfo.ftLastWriteTime, &Wk_FileInfo.ftLastWriteTime,sizeof(Wk_FileInfo.ftLastWriteTime) ) ) )
        {
            // 同じなら処理しない
            return;
        }
        else
        {
            // ファイル情報をバックアップする
            memcpy( &E_FileInfo, &Wk_FileInfo, sizeof(Wk_FileInfo) );
        }
    }
サンプルでは最終更新時刻を取得して、更新されていれば処理を行うロジックになっています。
GetFileAttributesEx()関数の第一引数はファイルを指定します。第二引数はGetFileExInfoStandardを そのまま記述して下さい。第三引数はWIN32_FILE_ATTRIBUTE_DATA構造体へのアドレスを指定します。
WIN32_FILE_ATTRIBUTE_DATA構造体のメンバは以下のようになっています。
dwFileAttributes  ファイル属性
ftCreationTime   ファイル作成日時
ftLastAccessTime  最終アクセス日時
ftLastWriteTime 最終更新日時
nFileSizeHigh    ファイルサイズの上位32ビット
nFileSizeLow    ファイルサイズの下位32ビット
日時は世界協定時刻(UTC)の1601年1月1日から100ナノ秒単位での経過時間です。



使った事はありませんが、ファイル操作関係のAPI関数も紹介しておきます。

フォルダの作成
CreateDirectory()関数
BOOL CreateDirectory( LPCTSTR arg1, LPSECURITY_ATTRIBUTES arg2 )
arg1:作成するフォルダ名
arg2:セキュリティ情報(よく知らんがNULLで動く)
戻り:成功ならTRUE

フォルダの削除
RemoveDirectory()関数
BOOL RemoveDirctory( LPCSTR arg1 )
arg1:削除するフォルダ名
戻り:成功ならTRUE

ファイルのコピー
CopyFile()関数
BOOL CopyFile( LPCSTR arg1, LPCSTR arg2, BOOL arg3 )
arg1:コピー元ファイル名
arg2:コピー先ファイル名
arg3:同名ファイル有時に上書きならFALSE
     同名ファイル有時にエラーならTRUE
戻り:成功ならTRUE




N総研ソフトウェア開発部のTOPに戻る。

このページに関するご意見・質問は
ドンタコスN村 E-mail:wnaka@coco.ned.co.jp
まで送信してください。