Могу ли я безопасно использовать `IO.File.GetAttributes` в папке? - PullRequest
2 голосов
/ 13 ноября 2011

Мой код 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 ]

2 голосов
/ 13 ноября 2011

Да, тоже самое.Вы можете сказать из класса наследования.Оба класса FileInfo и DirectoryInfo наследуют неабстрактное свойство Attribute от абстрактного класса FileSystemInfo.

1 голос
/ 13 ноября 2011

Как уже указал Ганс Пассант в своем ответе, это то же самое.Первое указание - это общий базовый класс FileSystemInfo (Attributes свойство), который FileInfo и DirectoryInfo разделяют.

Но * File.GetAttributes() и DirectoryInfo.Attributes тоже одно и то же?

Чтобы ответить на этот вопрос, взгляните на справочный исходный код .Net Framework.

Вы можете скачать исходный код ссылки здесь . Исходный код ссылки .Net .Там вы обнаружите, что оба (DirectoryInfo.Attributes) и File.GetAttributes() оба в конечном итоге вызывают внутреннюю функцию класса File для получения атрибутов.

Надеюсь, это поможет.

0 голосов
/ 13 ноября 2011

Похоже, вы, вероятно, уже ответили на свой вопрос, прежде чем вы его задали. Но если вы найдете причину, по которой это не сработает, вы всегда можете указать одну строку на другую:

вернуть новое DirectoryInfo (AbsSource). Атрибуты! = Новое DirectoryInfo (AbsDest) .Attributes;

0 голосов
/ 13 ноября 2011

AFAIK, в некотором смысле, каталог - это сам файл, просто специальный. Поэтому логично, что общие операции, такие как GetAttributes, также работают с каталогами.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...