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

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

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

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

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

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

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