[Tips][ファイル操作] ファイル属性を設定する

ファイルやディレクトリに属性を設定するには、FileクラスSetAttributesメソッドを使用します。

SetAttributesメソッドを使用する場合は、第1引数には属性を設定したいファイルやディレクトリのパスを、第2引数には属性(FileAttributes列挙体)を指定します。FileAttributes列挙体については前回の記事を参照ください。

下記は指定したファイルが指定したファイルを読み取り専用にする例です。

VBの例


Dim targetFile As String = "C:\Work\Test.txt"   '対象ファイル
Dim attr As IO.FileAttributes

'現在の属性を取得する
attr = IO.File.GetAttributes(targetFile)

If (attr And IO.FileAttributes.ReadOnly) = IO.FileAttributes.ReadOnly Then
    MessageBox.Show("このファイルは既に読み取り専用ファイルです")
Else
    Dim newAttr As FileAttribute
    '現在の属性に読み取り専用属性をプラスする
    newAttr = attr Or IO.FileAttributes.ReadOnly
    IO.File.SetAttributes(targetFile, newAttr)

    MessageBox.Show("読み取り専用に設定しました")
End If

C#の例

string targetFile = @"C:\Work\Test.txt";    // 対象ファイル
System.IO.FileAttributes attr;

// 現在の属性を取得する
attr = System.IO.File.GetAttributes(targetFile);

if ((attr & System.IO.FileAttributes.ReadOnly) ==
    System.IO.FileAttributes.ReadOnly)
    MessageBox.Show("このファイルは既に読み取り専用ファイルです");
else
{
    System.IO.FileAttributes newAttr;

    // 現在の属性に読み取り専用属性をプラスする
    newAttr = attr | System.IO.FileAttributes.ReadOnly;
    System.IO.File.SetAttributes(targetFile, newAttr);

    MessageBox.Show("読み取り専用に設定しました");
}

[Tips][ファイル操作] ファイル属性を取得する

ファイルの属性を取得するには、FileクラスGetAttributesメソッドを使用します。

GetAttributesの引数には、属性を調べたいファイルのパスを指定します。このメソッドはFileクラスのメンバですがディレクトリの属性も調べることができます。

GetAttributesメソッドの戻り値は、FileAttributes型となっており、特定のビットに属性情報がセットされます。

したがって、どのような属性を持っているかを調べるには、GetAttributesメソッドの戻り値とFileAttributes列挙体(下記)の値でビット演算を行う必要があります。

FileAttributes列挙体
メンバ名 説明
ReadOnly 読み取り専用
Hidden 隠し属性
System システムファイル
Directory ディレクトリ
Archive アーカイブ
Device 今後使用するために予約されている
Normal 標準のファイル
temporary 一時ファイル
SparseFile スパースファイル
ReparsePoint リパースポイントが含まれている
Compressed 圧縮ファイル
Offline ファイルはオフラインである
NotContentIndex インデックス付けサービスによるインデックスが付いていない
Encrypted ファイルまたはディレクトリは暗号化されている

下記は、指定したファイルが読み取り専用かどうかを調べる例です。

VBの例

<br />Dim targetFile As String = "C:\Work\Test.txt"   '対象ファイル<br />Dim attr As IO.FileAttributes<br /><br />'属性を取得する<br />attr = IO.File.GetAttributes(targetFile)<br /><br />If (attr And IO.FileAttributes.ReadOnly) = IO.FileAttributes.ReadOnly Then<br />    MessageBox.Show("読み取り専用ファイルです")<br />Else<br />    MessageBox.Show("読み取り専用ファイルではありません")<br />End If<br />

C#の例

<br />string targetFile = @"C:\Work\Test.txt";    // 対象ファイル<br />System.IO.FileAttributes attr;<br /><br />// 属性を取得する<br />attr = System.IO.File.GetAttributes(targetFile);<br /><br />if ((attr &amp; System.IO.FileAttributes.ReadOnly) ==<br />    System.IO.FileAttributes.ReadOnly)<br />    MessageBox.Show("読み取り専用ファイルです");<br />else<br />    MessageBox.Show("読み取り専用ファイルではありません");<br />

[Tips][ファイル操作] ファイルアクセス日時を取得/設定する

ファイルの最終アクセス日時を取得するにはFileクラスのGetLastAccessTimeメソッドを、最終アクセス日時を設定するにはSetLastAccessTimeメソッドを使用します。

下記は、ファイルの最終アクセス日時を取得する例です。

VBの例(ファイルアクセス時の取得)

Dim targetFile As String = "C:\Work\Test.txt"   '対象ファイル
Dim lastAccessTime As Date

lastAccessTime = IO.File.GetLastAccessTime(targetFile)

MessageBox.Show(targetFile & " の最終アクセス日時日時は " & lastAccessTime.ToString() & " です")

C#の例(ファイルアクセス日時の取得)

string targetFile = @"C:\Work\Test.txt";    // 対象ファイル
DateTime lastAccessTime;

lastAccessTime = System.IO.File.GetCreationTime(targetFile);

MessageBox.Show(targetFile + " の最終アクセス日時は " + lastAccessTime.ToString() + " です");

下記は、ファイルのアクセス日時を設定する例です。

VBの例(ファイルアクセス日時の設定)

'2011/4/2 9:00:00をアクセス日時にする
Dim newLastAccessTime As New Date(2011, 4, 2, 9, 0, 0)
IO.File.SetLastAccessTime(targetFile, newLastAccessTime)

C#の例(ファイルアクセス日時の設定)

// 2011/4/2 9:00:00をアクセス日時にする
DateTime newLastWriteTime = new DateTime(2011, 4, 2, 9, 0, 0);
System.IO.File.SetCreationTime(targetFile, newLastWriteTime);