[ VC++ ] ファイル属性の取得 – ファイル・ディレクトリ・読取専用 ( CFIle / CFileStatus )

Pocket

本日は晴天なり。とても暑いです。

さて、唐突ではございますが、ここでは VC++ において、ファイルとディレクトリを区別するサンプルコードを掲載しています。

スポンサーリンク

ファイル属性の取得と判定(ファイル・ディレクトリ・読み取り専用)

ファイルの属性を取得して、ファイルなのかディレクトリなのかを判定するサンプルコードです。また、ファイルが読み取り専用であるかも判断しています。詳細はコメントを参照ください。

CFileStatus Status;
BOOL ret = CFile::GetStatus( _T("sample.dat"), Status );
if ( ret == FALSE )
{
    // ファイルが存在しないなど、ステータスの取得に失敗
}
if ( Status.m_attribute & CFile::directory ) == CFile::directory )
{
    // ディレクトリであるか判定
}
if ( Status.m_attribute & CFile::readOnly )
{
    //読み取り専用ファイル
}

CFileStatus.m_attribute プロパティの一覧

サンプルコードでは、ファイル属性(m_attribute)から、ファイルとディレクトリの判定と、そのファイルが読み取り専用であるか否かを判定しましたが、その他のファイル属性については、下記の通りそれぞれ取得できます。

プロパティ 内容
normal 0x00 ノーマルファイル
readOnly 0x01 読み取り専用ファイル
hidden 0x02 隠しファイル
system 0x04 システムファイル
volume 0x08 ボリュームファイル
directory 0x10 ディレクトリ
archive 0x20 アーカイブファイル

CFileStatus で取得できるファイル情報一覧

上記のサンプルコードでは、m_attribute プロパティからファイル属性を取得しましたが、その他取得できるプロパティを下表にまとめます。

プロパティ 内容
CTime m_ctime ファイルの作成日時
CTime m_mtime 最終更新日時ファイル
CTime m_atime ファイルが読み取りのために最後にアクセスされた日時
ULONGLONG m_size DIR コマンドによって報告されるファイルの論理サイズ(バイト)
BYTE m_attribute ファイルの属性
Windowschar m_szFullName[_MAX_PATH] 絶対ファイル名
スポンサーリンク


Pocket

Leave a Comment

Your email address will not be published. Required fields are marked *