Работа с типом DirectoryInfo
Первым из рассматриваемых в нашем обсуждении типов, связанных с реализацией ввода-вывода и допускающих создание экземпляров, будет класс DirectoryInfo. Этот класс предлагает набор членов, используемых для создания, перемещения, удаления и перечисления каталогов и подкаталогов. Кроме функциональных возможностей, обеспеченных базовым классом (FileSystemInfo), класс DirectoryInfo предлагает и свои члены, описанные в табл. 16.3.
Таблица 16.3.Основные члены типа DirectoryInfo
| Члены |
Описание |
| Create() CreateSubdirectory() |
Создает каталог (или множество подкаталогов) в соответствии с заданным именем пути |
| Delete() |
Удаляет каталог и все его содержимое |
| GetDirectories() |
Возвращает массив строк, представляющих все подкаталоги текущего каталога |
| GetFiles() |
Получает массив типов FileInfo, представляющих множество файлов данного каталога |
| MoveTo() |
Перемещает каталог и его содержимое в место, соответствующее заданному новому пути |
| Parent |
Получает каталог родителя указанного пути |
| Root |
Получает корневую часть пути |
Мы начнем работу с типом DirectoryInfo с попытки указать конкретный путь каталога для использования в качестве параметра конструктора. Чтобы получить доступ к текущему каталогу приложения (т.е. к каталогу приложения, выполняющегося в данный момент), используйте обозначение ".". Вот подходящие примеры.
// Привязка к текущему каталогу приложения.
DirectoryInfo dir1 = new DirectoryInfo(".");
// Привязка к C:\Windows с помощью строки,
// для которой указано "дословное" применение.
DirectoryInfo dir2 = new DirectoryInfo(@"C:\Windows");
Во втором примере предполагается, что передаваемый конструктору путь (путь C:\Windows) уже существует на данной физической машине. Если вы попытаетесь взаимодействовать с несуществующим каталогом, будет сгенерировано исключение System.IO.DirectoryNotFoundException (каталог не найден). Поэтому если вы укажете каталог, который еще не создан, то перед его использованием вам придется сначала вызвать метод Create().
// Привязка к несуществующему каталогу с последующим его созданием.
DirectoryInfo dir3 = new DirectoryInfo(@"C:\Window\Testing");
dir3.Create();
После создания объекта DirectoryInfo вы можете исследовать содержимое соответствующего каталога с помощью свойств, унаследованных от FileSystemInfo. Например, следующий класс создает новый объект DirectoryInfo, связанный с C:\Windows (при необходимости измените этот путь в соответствии с установками системы на вашей машине) и отображающий ряд интересных статистических данных об указанном каталоге (рис. 16.2).
class Program {
static void Main(string[] args) {
Console.WriteLine("* **** Забавы с Directory(Info) *****\n");
DirectoryInfo dir = new DirectoryInfo(@"C:\Windows");
// Информация о каталоге.
Console.WriteLine("***** Информация о каталоге *****");
Console.WriteLine("Полное имя: {0} ", dir.FullName);
Console.WriteLine("Имя: {0} ", dir.Name);
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
Свойство Attributes, предоставленное объектом FileSystemInfо, обеспечивает получение различной информации о текущем каталоге или файле, и вся она содержится в перечне FileAttributes. Имена полей этого перечня говорят сами за себя, но некоторые менее очевидные имена здесь сопровождаются комментариями (подробности вы найдете в документации .NET Framework 2.0 SDK).
public enum FileAttributes {
ReadOnly,
Hidden,
// Файл, являющийся частью операционной системы или используемый
// исключительно операционной системой.
System,
Directory,
Archive,
// Это имя зарезервировано для использования в будущем.
Device,
// Файл является 'нормальным' (если не имеет других
// установленных атрибутов),
Normal,
Temporary,
// Разреженные файлы обычно являются большими файлами,
// данные которых по большей части – нули.
SparseFile,
// Блок пользовательских данных, связанных с файлом или каталогом.
Читать дальше