我需要知道是否可以在特定文件夹中创建文件,但要检查的内容太多,例如权限,重复文件等。
我正在寻找类似File.CanCreate(@"C:\myfolder\myfile.aaa"
)的东西,但还没有找到这样的方法。
我唯一想到的是尝试创建一个虚拟文件并检查异常,但这是一个影响性能的无法解决方案。
你知道更好的解决方案吗?
答案 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策略。即便如此,也有一些流程可以决定您不允许创建文件(例如病毒扫描程序)。
最好和最完整的方法是尝试它。