[ 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)から、ファイルとディレクトリの判定と、そのファイルが読み取り専用であるか否かを判定しましたが、その他のファイル属性については、下記の通りそれぞれ取得できます。

プロパティ内容
normal0x00ノーマルファイル
readOnly0x01読み取り専用ファイル
hidden0x02隠しファイル
system0x04システムファイル
volume0x08ボリュームファイル
directory0x10ディレクトリ
archive0x20アーカイブファイル

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

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

プロパティ内容
CTimem_ctimeファイルの作成日時
CTimem_mtime最終更新日時ファイル
CTimem_atimeファイルが読み取りのために最後にアクセスされた日時
ULONGLONGm_sizeDIR コマンドによって報告されるファイルの論理サイズ(バイト)
BYTEm_attributeファイルの属性
Windowscharm_szFullName[_MAX_PATH]絶対ファイル名
スポンサーリンク

Pocket

Leave a Reply

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

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>