Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Класс DirectoryInfoСтр 1 из 2Следующая ⇒
Работа с файловой системой В пространстве имен System.IO предусмотрено четыре класса, которые предназначены для работы с файловой системой компьютера, т.е для создания, удаления переноса и т.д. файлов и каталогов. Первые два типа — Directory и Fi1е реализуют свои возможности с помощью статических методов, поэтому данные классы можно использовать без создания соответствующих объектов (экземпляров классов). Следующие типы – DirectoryInfo и FileInfo обладают схожими функциональными возможностями c Directory и Fi1е, но порождены от класса FileSystemInfo и поэтому реализуются путем создания соответствующих экземпляров классов.
Работа с каталогами Абстрактный класс FileSystemInfo Значительная часть членов FileSystemInfo предназначена для работы с общими характеристиками файла или каталога (метками времени, атрибутами и т. п.). Рассмотрим некоторые свойства FileSystemInfo:
В FileSystemInfo предусмотрено и несколько методов. Например, метод Delete() - позволяет удалить объект файловой системы с жесткого диска, a Refresh() — обновить информацию об объекте файловой системы. Класс DirectoryInfo Данный класс наследует члены класса FileSystemInfo и содержит дополнительный набор членов, которые предназначены для создания, перемещения, удаления, получения информации о каталогах и подкаталогах в файловой системе. Наиболее важные члены класса содержатся в следующей таблице:
Работа с типом DirectoryInfo начинается с того, что мы создаем экземпляр класса (объект), указывая при вызове конструктора в качестве параметра путь к нужному каталогу. Если мы хотим обратиться к текущему каталогу (то есть каталогу, в котором в настоящее время производится выполнение приложения), вместо параметра используется обозначение ".". Например:
// Создаем объект DirectoryInfo, которому будет обращаться к текущему каталогу DirectoryInfo dir1 = new DirectoryInfo("."); // Создаем объект DirectoryInfo, которому будет обращаться к каталогу d: \prim DirectoryInfo dir2 = new DirectoryInfo(@" d: \prim");
Если мы попытаемся создать объект DirectoryInfo, связав его с несуществующим каталогом, то будет сгенерировано исключение System.IO.DirectoryNotFoundException. Если же все нормально, то мы сможем получить доступ к данному каталогу. В примере, который приведен ниже, мы создаем объект DlrectoryInfo, который связан с каталогом d: \prim, и выводим информацию о данном каталоге:
using System; using System.Text; using System.IO;
namespace MyProgram { class Program { static void Main(string[] args) { DirectoryInfo dir = new DirectoryInfo(@" d: \prim"); Console.WriteLine(" ***** " +dir.Name+" *****"); Console.WriteLine(" FullName: {0}", dir.FullName); Console.WriteLine(" Name: {0}", dir.Name); Console.WriteLine(" Parent: {0}", dir.Parent); Console.WriteLine(" Creation: {0}", dir.CreationTime); Console.WriteLine(" Attributes: {0}", dir.Attributes.ToString()); Console.WriteLine(" Root: {0}", dir.Root); } } }
Свойство Attributes позволяет получить информацию об атрибутах объекта файловой системы. Возможные значения данного свойства приведены в следующей таблице:
Через DirectoryInfo можно не только получать доступ к информации о текущем каталоге, но получить доступ к информации о его подкаталогах:
class Program { static void printDirect(DirectoryInfo dir) { Console.WriteLine(" ***** " +dir.Name+" *****"); Console.WriteLine(" FullName: {0}", dir.FullName); Console.WriteLine(" Name: {0}", dir.Name); Console.WriteLine(" Parent: {0}", dir.Parent); Console.WriteLine(" Creation: {0}", dir.CreationTime); Console.WriteLine(" Attributes: {0}", dir.Attributes.ToString()); Console.WriteLine(" Root: {0}", dir.Root); }
static void Main(string[] args) { DirectoryInfo dir = new DirectoryInfo(@" d: \prim"); printDirect(dir); DirectoryInfo[] subDirects = dir.GetDirectories(); Console.WriteLine(" Найдено {0} подкаталогов", subDirects.Length); foreach (DirectoryInfo d in subDirects) { printDirect(d); } } }
Метод CreateSubdirectory() позволяет создать в выбранном каталоге как единственный подкаталог, так и множество подкаталогов (в том числе, и вложенных друг в друга). Создадим в каталоге несколько дополнительных подкаталогов:
DirectoryInfo dir = new DirectoryInfo(@" d: \prim"); dir.CreateSubdirectory(" doc"); //создали подкаталог dir.CreateSubdirectory(@" book\2008"); //создали вложенный подкаталог
Метод MoveTo() позволяет переместить текущий каталог по заданному в качестве параметра адресу. При этом возможно произвести переименование каталога. Например:
DirectoryInfo dir = new DirectoryInfo(@" d: \prim\bmp"); dir.(@" d: \prim\letter\bmp");
В данном случае каталог bmp перемещается в по адресу d: \prim\letter\bmp. Так как имя перемещаемого каталога совпадает с крайним правым именем в адресе нового местоположения каталога, то переименования не происходит. Следующий пример позволит нам переименовать текущий каталог:
DirectoryInfo dir = new DirectoryInfo(@" d: \prim\letter"); dir.MoveTo(@" d: \prim\archive");
|