8

特定のフォルダにファイルを作成できるかどうかを知りたいのですが、アクセス許可やファイルの重複など、チェックする項目が多すぎます。File.CanCreate(@"C:\myfolder\myfile.aaa") のようなものを探していますが、そのような方法は見つかりませんでした。私が考えた唯一のことは、ダミーファイルを作成して例外をチェックしようとすることですが、これはパフォーマンスにも影響する見苦しい解決策です。より良い解決策を知っていますか?

4

2 に答える 2

17

実際には、ダミー ファイルを作成しても、ほとんどのアプリケーションでパフォーマンスに大きな影響はありません。もちろん、create で高度なアクセス許可を持っていて、destroy を持っていない場合は、少し複雑になる可能性があります...

Guid は、(競合を避けるために) ランダムな名前に対して常に便利です - 次のようなものです:

string file = Path.Combine(dir, Guid.NewGuid().ToString() + ".tmp");
// perhaps check File.Exists(file), but it would be a long-shot...
bool canCreate;
try
{
    using (File.Create(file)) { }
    File.Delete(file);
    canCreate = true;
}
catch
{
    canCreate = false;
}
于 2008-11-25T10:20:58.600 に答える
1

CASを使用して、その場所でのファイルの作成と書き込みを制限する.NET ポリシー (caspol)がないことを確認できます。

ただし、これは Windows ポリシーをカバーしません。NTFS ポリシーを手動で確認する必要があります。それでも、ファイルの作成が許可されていないと判断するプロセスがあります (たとえば、ウイルス スキャナー)。

最善かつ最も完全な方法は、試してみることです。

于 2008-11-25T10:23:25.317 に答える