ファイル属性の取得と設定            <TOP>


指定したファイルの属性を取得・設定を実行し確認します。

GetFileAttributes 属性を取得するAPI

SetFileAttributes 属性を設定するAPI

 

あらかじめ 同じフォルダに適当なファイル(例:TEST.TXT)を作成しておきます。起動するとファイ名と現在の属性を表示します。

コンボボックス内の目的行を選択しクリックするとその属性が変更され、変更された属性が表示されます。

 
APIでなければならないわけではありません。

SETATTR - ファイルの属性を設定と解除を行います。

    SETATTR ファイルディスクリプタ, 属性

    ファイルディスクリプタ  → ファイル名

    属性 → 文字列で設定

        "+R"    読取専用属性を設定

        "+A"    アーカイブ属性を設定

        "-R"    読取専用属性を解除

        "-A"    アーカイブ属性を解除

    #include "File.bi"

    SETATTR "C:\Temp\test.txt", "+R"

 

'================================================================
'= ファイルの属性取得と変更の確認
'=    (GetFileAttributes.bas)
'================================================================
#include "Windows.bi"

' 指定されたファイルまたはディレクトリの属性を取得
Declare Function Api_GetFileAttributes& Lib "Kernel32" Alias "GetFileAttributesA" (ByVal lpFileName$)

' ファイルの属性を変更
Declare Function Api_SetFileAttributes& Lib "Kernel32" Alias "SetFileAttributesA" (ByVal lpFileName$, ByVal dwFileAttributes&)

#define FILE_ATTRIBUTE_ARCHIVE &H20     'アーカイブ属性
#define FILE_ATTRIBUTE_DIRECTORY &H10   'ディレクトリ属性
#define FILE_ATTRIBUTE_HIDDEN &H2       '隠しファイル属性
#define FILE_ATTRIBUTE_NORMAL &H80      'ファイル属性を持たない
#define FILE_ATTRIBUTE_READONLY &H1     '読み込み専用属性
#define FILE_ATTRIBUTE_SYSTEM &H4       'システムファイル属性

#define FILE_ATTRIBUTE_COMPRETSED &H800 '圧縮属性を示す定数
#define FILE_ATTRIBUTE_TEMPORARY &H100  '一時ファイル属性を示す定数

Var Shared Text1 As Object
Var Shared Text2 As Object
Var Shared Combo1 As Object

Text1.Attach GetDlgItem("Text1") : Text1.SetFontSize 14
Text2.Attach GetDlgItem("Text2") : Text2.SetFontSize 14
Combo1.Attach GetDlgItem("Combo1") : Combo1.SetFontSize 14

Var Shared nFile As String
Var Shared WK$(5,1) As String

'================================================================
'=
'================================================================
Declare Sub Attr_Dsp edecl ()
Sub Attr_Dsp()
    Var Ret As Long

    Text1.SetWindowtext nFile

    Ret = Api_GetFileAttributes(nFile)

    Select Case Ret
        Case FILE_ATTRIBUTE_ARCHIVE
            Text2.SetWindowtext "アーカイブ属性"
        Case FILE_ATTRIBUTE_DIRECTORY
            Text2.SetWindowtext "ディレクトリ属性"
        Case FILE_ATTRIBUTE_HIDDEN
            Text2.SetWindowtext "隠しファイル属性"
        Case FILE_ATTRIBUTE_NORMAL
            Text2.SetWindowtext "ファイル属性持たない"
        Case FILE_ATTRIBUTE_READONLY
            Text2.SetWindowtext "読み込み専用属性"
        Case FILE_ATTRIBUTE_SYSTEM
            Text2.SetWindowtext "システムファイル属性"
    End Select
End Sub

'================================================================
'=
'================================================================
declare sub MainForm_Start edecl ()
sub MainForm_Start()
    nFile = "test.txt"

    For i = 0 To 5
        For j = 0 To 1
            Read WK$(i, j)
        Next
        Combo1.AddString WK$(i, 0)
    Next

    data FILE_ATTRIBUTE_ARCHIVE  , "&h20"
    data FILE_ATTRIBUTE_DIRECTORY, "&h10"
    data FILE_ATTRIBUTE_HIDDEN   , "&h2"
    data FILE_ATTRIBUTE_NORMAL   , "&h80"
    data FILE_ATTRIBUTE_READONLY , "&h1"
    data FILE_ATTRIBUTE_SYSTEM   , "&h4"
    Attr_Dsp
End Sub

'================================================================
'=
'================================================================
Declare Sub Combo1_Change edecl ()
Sub Combo1_Change()
    Var NO As Long
    Var Ret As Long

    NO = Combo1.GetCursel

    Ret = Api_SetFileAttributes(nFile, Val(WK$(NO, 1)))
    Attr_Dsp
End Sub

'================================================================
'=
'================================================================
While 1
    WaitEvent
Wend
Stop
End