DWORD GetFileAttributes(LPCSTR FileName);
Declare Function GetFileAttributes Lib "kernel32" Alias "GetFileAttributesA" (ByVal FileName As String) As Long
ファイルの中には、属性の取得に失敗するものもある(pagefile.sysなど)。このような場合、FindFirstFileなどを使用して属性を取得する必要がある。
引数の意味は、以下の通り。
FileName | 属性の取得元ファイル名またはディレクトリ名 |
戻り値は、取得した属性値で、以下のフラグの論理和である。属性の取得に失敗した場合、-1が返される。
FILE_ATTRIBUTE_ARCHIVE | アーカイブファイル/ディレクトリ |
FILE_ATTRIBUTE_COMPRESSED | 圧縮ファイル/ディレクトリ |
FILE_ATTRIBUTE_DIRECTORY | ディレクトリ |
FILE_ATTRIBUTE_HIDDEN | 隠しファイル/ディレクトリ |
FILE_ATTRIBUTE_NORMAL | ノーマルファイル/ディレクトリ |
FILE_ATTRIBUTE_READONLY | 読み込み専用ファイル/ディレクトリ |
FILE_ATTRIBUTE_SYSTEM | システムファイル/ディレクトリ |
FILE_ATTRIBUTE_TEMPORARY | 一時ファイル/ディレクトリ |
FILE_ATTRIBUTE_ATOMIC_WRITE | 不明 |
FILE_ATTRIBUTE_XACTION_WRITE | 不明 |
FILE_ATTRIBUTE_OFFLINE | 不明 |
void DispFileAttr() { DWORD fa; fa = GetFileAttributes("c:\\command.com"); if(fa & FILE_ATTRIBUTE_ARCHIVE) printf("アーカイブ\n"); if(fa & FILE_ATTRIBUTE_COMPRESSED) printf("圧縮\n"); if(fa & FILE_ATTRIBUTE_DIRECTORY) printf("ディレクトリ\n"); if(fa & FILE_ATTRIBUTE_HIDDEN) printf("隠しファイル/ディレクトリ\n"); if(fa & FILE_ATTRIBUTE_NORMAL) printf("ノーマル\n"); if(fa & FILE_ATTRIBUTE_READONLY) printf("書込み禁止\n"); if(fa & FILE_ATTRIBUTE_SYSTEM) printf("システム\n"); if(fa & FILE_ATTRIBUTE_TEMPORARY) printf("一時ファイル/ディレクトリ\n"); }
' ファイルの属性を表示 Private Sub DispFileAttr() Dim Attr As Long Dim Msg As String ' 属性の取得 Attr = GetFileAttributes("c:\command.com") 'メッセージの作成 If (Attr And FILE_ATTRIBUTE_ARCHIVE) <> 0 Then Msg = Msg & "アーカイブ" & vbCr If (Attr And FILE_ATTRIBUTE_COMPRESSED) <> 0 Then Msg = Msg & "圧縮" & vbCr If (Attr And FILE_ATTRIBUTE_DIRECTORY) <> 0 Then Msg = Msg & "隠しファイル" & vbCr If (Attr And FILE_ATTRIBUTE_HIDDEN) <> 0 Then Msg = Msg & "ノーマル" & vbCr If (Attr And FILE_ATTRIBUTE_READONLY) <> 0 Then Msg = Msg & "書込み禁止" & vbCr If (Attr And FILE_ATTRIBUTE_SYSTEM) <> 0 Then Msg = Msg & "システム" & vbCr If (Attr And FILE_ATTRIBUTE_TEMPORARY) <> 0 Then Msg = Msg & "一時ファイル/ディレクトリ" & vbCr '属性の表示 MsgBox Msg End Sub