Чтение онлайн

ЖАНРЫ

ЯЗЫК ПРОГРАММИРОВАНИЯ С# 2005 И ПЛАТФОРМА .NET 2.0. 3-е издание

Троелсен Эндрю

Шрифт:

Console.WriteLine("Родитель: {0} ", dir.Parent);

Console.WriteLine("Создан: {0} ", dir.CreationTime);

Console.WriteLine("Атрибуты: {0} ", dir.Attributes);

Console.WriteLine("Корневой каталог: {0}", dir.Root);

Console.WriteLine("********************************\n");

 }

}

Рис. 16.2. Информация о каталоге Windows

Перечень FileAttributes

Свойство Attributes,

предоставленное объектом 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");

// Получение всех файлов с расширением bmp.

FileInfo[] bitmapFiles = dir.GetFiles("*.bmp");

// Сколько их всего?

Console.WriteLine("Найдено {0} файлов *.bmp\n", bitmapFiles.Length);

//
Вывод информации о файлах.

foreach (FileInfo f in bitmapFiles) {

Console.WriteLine("***************************\n");

Console.WriteLine("Имя: {0} ", f.Name);

Console.WriteLine("Размер: {0} ", f.Length);

Console.WriteLine("Создан: {0} ", f.CreationTime);

Console.WriteLine("Атрибуты: {0} ", f.Attributes);

Console.WriteLine("***************************\n");

}

 }

}

Запустив это приложение, вы увидите список, подобный показанному на рис. 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.

Поделиться с друзьями: