如何检查我是否可以在特定文件夹中创建文件

时间:2008-11-25 10:15:33

标签: c# .net permissions filesystems

我需要知道是否可以在特定文件夹中创建文件,但要检查的内容太多,例如权限,重复文件等。 我正在寻找类似File.CanCreate(@"C:\myfolder\myfile.aaa")的东西,但还没有找到这样的方法。 我唯一想到的是尝试创建一个虚拟文件并检查异常,但这是一个影响性能的无法解决方案。 你知道更好的解决方案吗?

2 个答案:

答案 0 :(得分:17)

实际上,创建虚拟文件不会对大多数应用程序产生巨大的性能影响。当然,如果你有创建但不破坏的高级权限,它可能会有点毛茸茸......

Guids总是方便随机名称(以避免冲突) - 类似于:

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;
}

答案 1 :(得分:1)

您可以使用CAS验证没有 .NET策略(caspol)限制在该位置创建和写入文件。

但这不会涵盖Windows政策。您必须手动检查NTFS策略。即便如此,也有一些流程可以决定您不允许创建文件(例如病毒扫描程序)。

最好和最完整的方法是尝试它。