8

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

4

2 回答 2

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;
}
于 2008-11-25T10:20:58.600 回答
1

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

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

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

于 2008-11-25T10:23:25.317 回答