我的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
?
谢谢!
答案 0 :(得分:2)
是的,同样的事情。你可以从类继承中看出来。 FileInfo和DirectoryInfo类都从抽象的FileSystemInfo类继承非抽象Attribute属性。
答案 1 :(得分:1)
正如汉斯帕斯特在他的回答中已经指出的那样是一回事。第一个inidcation是FileSystemInfo
和Attributes
共享的公共基类FileInfo
(DirectoryInfo
属性)。
但是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;