我可以安全地在文件夹上使用`IO.File.GetAttributes`吗?

时间:2011-11-13 09:08:11

标签: c# attributes io

我的C#代码使用以下两个代码段检测文件和文件夹属性的更改:

// For files
    return (IO.File.GetAttributes(Source) != IO.File.GetAttributes(Dest))

// For folders
    IO.DirectoryInfo SourceInfo = new IO.DirectoryInfo(AbsSource);
    IO.DirectoryInfo DestInfo = new IO.DirectoryInfo(AbsDest);
    return (SourceInfo.Attributes != DestInfo.Attributes);

我注意到IO.File.GetAttributes似乎也可以处理文件夹文件夹,所以我想知道是否可以删除特定于目录的部分,只需对文件和文件夹使用单行文件。

这可能吗?阅读IO.DirectoryInfo.Attributes是否等同于调用File.GetAttributes

谢谢!

4 个答案:

答案 0 :(得分:2)

是的,同样的事情。你可以从类继承中看出来。 FileInfo和DirectoryInfo类都从抽象的FileSystemInfo类继承非抽象Attribute属性。

答案 1 :(得分:1)

正如汉斯帕斯特在他的回答中已经指出的那样是一回事。第一个inidcation是FileSystemInfoAttributes共享的公共基类FileInfoDirectoryInfo属性)。

但是File.GetAttributes()DirectoryInfo.Attributes也是一样的吗?

要回答这个问题,请查看.Net Framework参考源代码。

您可以从此处.Net Reference Source Code下载参考源代码。在那里你会发现(DirectoryInfo.Attributes)和File.GetAttributes()都会在File类上调用内部函数来获取属性。

希望,这有帮助。

答案 2 :(得分:0)

AFAIK,在某种程度上,目录本身就是一个文件,只是一个特殊的文件。因此,像GetAttributes这样的常见操作也可以处理目录,这是合乎逻辑的。

答案 3 :(得分:0)

在您提出问题之前,您可能已经回答了自己的问题。但是如果你发现某些原因它不起作用,那么你总是可以将另一个排成一行:

返回新的DirectoryInfo(AbsSource).Attributes!= new DirectoryInfo(AbsDest).Attributes;