C# と VB.NET の質問掲示板

わんくま同盟

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト


(過去ログ 40 を表示中)
■20476 / )  Re[40]: ディレクトリの排他アクセス
□投稿者/ れい (641回)-(2008/06/11(Wed) 02:31:25)
No20475 (す さん) に返信
> あれ、そうなんですか。
> でも、「メタ情報」はディレクトリ側に持ってるんですよね?

いいえ。
ディレクトリ側には持っていません。
ディレクトリもメタ情報をもってますが、それはディレクトリ自身のメタ情報です。

> それを見るのにもファイルをオープンしないといけないんですか?

そうです。

以下はNTのファイルシステムの話です。

「c:\aaa\tmp.exe」という場合、
c:\aaa\tmp.exeのファイル属性や更新日時などのメタ情報はc:\aaa\tmp.exeが持っています。
c:\aaaのファイル属性や更新日時などのメタ情報はc:\aaaが持っています。

で、「見る」場合は二通り方法があります。

「c:\aaa\tmp.exe」のメタ情報を「見る」には二通り方法があり、
「c:\aaa\tmp.exe」のハンドルを開いて取得するか、
「c:\aaa」を開いてディレクトリ一覧を見て、そこから取得します。

「c:\aaa\tmp.exe」のメタ情報を「更新する」には
「c:\aaa\tmp.exe」のハンドルを開いて更新するしかありません。

で、Vistaより前のWin32APIだと、

「c:\aaa\tmp.exe」のAttributeを「見る」「書く」には…
「エントリ名」を指定してGetFileAttribute/SetFileAttributeを使います。

「c:\aaa\tmp.exe」の更新日時などを「見る」「書く」には…
「ハンドル」を指定してGetFileTime/SetFileTimeを使います。

Vista以降だと、Attributeに関しても「ハンドル」を用いて「見る」「書く」ことができます。

返信 編集キー/


管理者用

- Child Tree -