предоставленное объектом FileSystemInfо, обеспечивает получение различной информации о текущем каталоге или файле, и вся она содержится в перечне FileAttributes. Имена полей этого перечня говорят сами за себя, но некоторые менее очевидные имена здесь сопровождаются комментариями (подробности вы найдете в документации .NET Framework 2.0 SDK).
public enum FileAttributes {
ReadOnly,
Hidden,
// Файл, являющийся частью операционной системы или используемый
// исключительно операционной системой.
System,
Directory,
Archive,
// Это имя зарезервировано для использования в будущем.
Device,
// Файл является 'нормальным' (если не имеет других
// установленных атрибутов),
Normal,
Temporary,
// Разреженные файлы обычно являются большими файлами,
// данные которых по большей части – нули.
SparseFile,
// Блок пользовательских данных, связанных с файлом или каталогом.
ReparsePoint,
Compressed,
Offline,
// Файл, который не будет индексирован службой индексации
// содержимого операционной системы.
NotContentIndexed,
Encrypted
}
Перечисление файлов с помощью DirectoryInfo
Вдобавок к получению базовой информации о существующем каталоге, вы можете добавить в пример несколько вызовов методов типа DirectoryInfo. Сначала используем метод GetFiles, чтобы получить информацию обо всех файлах *.bmp, размещенных каталоге C:\Windows. Этот метод возвращает массив типов FileInfo, каждый из которых сообщает подробности о конкретном файле (подробности о самом типе FileInfo будут представлены в этой главе немного позже).
class Program {
static void Main(string[] args) {
Console.WriteLine("***** Забавы с Directory(Info) *****\n");
DirectoryInfo dir = new DireetoryInfо(@"C:\Windows");
Запустив это приложение, вы увидите список, подобный показанному на рис. 16.3 (ваши результаты могут быть другими!).
Рис. 16.3. Информация о файлах с точечными изображениями
Создание подкаталогов с помощью DirectoryInfo
Вы можете программно расширить структуру каталога, используя метод DirectoryInfo.CreateSubdirectory. Этот метод с помощью одного обращения к функции позволяет создать как один подкаталог, так и множество вложенных подкаталогов. Для примера рассмотрите следующий блок программного кода, расширяющий структуру каталога C:\Windows путем создания нескольких пользовательских подкаталогов.
class Program {
static void Main(string[] args) {
Console.WriteLine("***** Забавы с Directory(Info) *****\n");
DirectoryInfo dir = new DirectoryInfo(@"C:\Windows");
…
// Создание \MyFoo в исходном каталоге.
dir.CreateSubdirectory("MyFoo");
// Создание \MyBar\MyQaaz в исходном каталоге
dir.CreateSubdirectory(@"MyBar\MyQaaz");
}
}
Если теперь проверить каталог Windows в окне программы Проводник, вы увидите там новые подкаталоги (рис. 16.4).
Рис. 16.4. Создание подкаталогов
Хотя вы и не обязаны использовать возвращаемое значение метода CreateSubdirectory, полезно знать, что в случае успешного выполнения тип DirectoryInfo возвращает созданный элемент.
// CreateSubdirectory возвращает объект DirectoryInfo,
// представляющий новый элемент.
DirectoryInfo d = dir.CreateSubdirectory("MyFoo");
Console.WriteLine("Создан: {0} ", d.FullName);
d = dir.CreateSubdirectory(@"MyBar\MyQaaz");
Console.WriteLine("Создан: {0} ", d.FullName);
Работа с типом Directory
Теперь, когда вы увидели тип DirectoryInfo в действии, рассмотрим тип Directory. По большей части члены Directory "дублируют" функциональные возможности, обеспечиваемые членами уровня экземпляра DirectoryInfo. Напомним, однако, что члены Directory возвращают строковые типы, а не строго типизированные объекты FileInfo/DirectoryInfo.