本日は晴天なり。とても暑いです。
さて、唐突ではございますが、ここでは 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] | 絶対ファイル名 |