我知道以前有人问过这个问题(实际上,我发现了很多类似问题的例子,但还没有令人满意的解决方案),但我要换个说法。我想使用FileInfo来指示是否可以在特定的磁盘(硬盘/usb卡/等)上创建一个(新的)文件。还有目录。
我目前面临的问题是:
如果我要创建的文件位于写入保护的磁盘/USB卡/等等上,则会抛出一个,问题只是在某个延迟之后(可能在调用()之后)抛出
那么,在尝试实际创建文件之前,我如何知道是否可以创建特定的文件呢?
谢谢..。
发布于 2011-02-16 12:29:18
这让我有了足够的兴趣尝试一下,尽管根本没有经过彻底或大量的测试,以下是您可能需要处理的几件事情(也要注意异常!):
static bool CanCreateFile(FileInfo fileInfo)
{
if (fileInfo.Exists) return false;
return !fileInfo.Attributes.HasFlag(FileAttributes.ReadOnly);
}
static bool CanCreateFile2(FileInfo fileInfo)
{
if (fileInfo.Exists) return false;
return IsDirectoryWriteable(
Path.GetDirectoryName(fileInfo.FullName));
}
static bool IsDirectoryWriteable(string path)
{
var directoryInfo = new DirectoryInfo(path);
if (!directoryInfo.Exists)
{
return IsDirectoryWriteable(directoryInfo.Parent.FullName);
}
return !directoryInfo.Attributes.HasFlag(FileAttributes.ReadOnly);
}但正如另一个答案所述,当你真正从“确认”中返回时,并不能保证在你的下一次写作行动之前,某些事情不会改变情况的有效性。
https://stackoverflow.com/questions/5016114
复制相似问题