Литмир - Электронная Библиотека
A
A

На заметку! Если вы не работаете на машине с Windows, тогда модифицируйте код, чтобы читать файлы в каком-нибудь каталоге на вашей машине  Не забудьте использовать

Path.VolumeSeparatorChar
и
Path.DirectorySeparatorChar
, сделав код межплатформенным.

Метод

GetFiles()
возвращает массив объектов
FileInfo
, каждый из которых открывает доступ к детальной информации о конкретном файле (тип
FileInfo
будет подробно описан далее в главе). Создайте в классе
Program
следующий статический метод:

static void DisplayImageFiles()

{

  DirectoryInfo dir = new

    DirectoryInfo(@"C:\Windows\Web\Wallpaper");

<b>  // Получить все файлы с расширением *.jpg.</b>

  FileInfo[] imageFiles =

    dir.GetFiles(&quot;*.jpg&quot;, SearchOption.AllDirectories);

<b>  // Сколько файлов найдено?</b>

  Console.WriteLine(&quot;Found {0} *.jpg files\n&quot;, imageFiles.Length);

  // Вывести информацию о каждом файле.

  foreach (FileInfo f in imageFiles)

  {

    Console.WriteLine(&quot;***************************&quot;);

    Console.WriteLine(&quot;File name: {0}&quot;, f.Name          // Имя файла

    Console.WriteLine(&quot;File size: {0}&quot;, f.Length);      // Размер

    Console.WriteLine(&quot;Creation: {0}&quot;, f.CreationTime); // Время создания

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

    Console.WriteLine(&quot;***************************\n&quot;);

  }

}

Обратите внимание на указание в вызове

GetFiles()
варианта поиска;
SearchOption.AllDirectories
обеспечивает просмотр всех подкаталогов корня. В результате запуска приложения выводится список файлов, которые соответствуют поисковому шаблону.

Создание подкаталогов с помощью типа DirectoryInfo

Посредством метода

DirectoryInfo.CreateSubdirectory()
можно программно расширять структуру каталогов. Он позволяет создавать одиночный подкаталог, а также множество вложенных подкаталогов в единственном вызове. В приведенном ниже методе демонстрируется расширение структуры каталога, в котором запускается приложение (обозначаемого с помощью
.
), несколькими специальными подкаталогами:

static void ModifyAppDirectory()

{

  DirectoryInfo dir = new DirectoryInfo(&quot;.&quot;);

<b>  // Создать \MyFolder в каталоге запуска приложения.</b>

  dir.CreateSubdirectory(&quot;MyFolder&quot;);

<b>  // Создать \MyFolder2\Data в каталоге запуска приложения.</b>

  dir.CreateSubdirectory(

    $@&quot;MyFolder2{Path.DirectorySeparatorChar}Data&quot;);

}

Получать возвращаемое значение метода

CreateSubdirectory()
не обязательно, но важно знать, что в случае его успешного выполнения возвращается объект
DirectoryInfo
, представляющий вновь созданный элемент. Взгляните на следующую модификацию предыдущего метода:

static void ModifyAppDirectory()

{

  DirectoryInfo dir = new DirectoryInfo(&quot;.&quot;);

<b>  // Создать \MyFolder в начальном каталоге.</b>

  dir.CreateSubdirectory(&quot;MyFolder&quot;);

<b>  // Получить возвращенный объект DirectoryInfo.</b>

  DirectoryInfo myDataFolder = dir.CreateSubdirectory(

    $@&quot;MyFolder2{Path.DirectorySeparatorChar}Data&quot;);

<b>  // Выводит путь к ..\MyFolder2\Data.</b>

  Console.WriteLine(&quot;New Folder is: {0}&quot;, myDataFolder);

}

Вызвав метод

ModifyAppDirectory()
в операторах верхнего уровня и запустив программу, в проводнике Windows можно будет увидеть новые подкаталоги.

Работа с типом Directory

Вы видели тип

DirectoryInfo
в действии и теперь готовы к изучению типа
Directory
. По большей части статические члены типа
Directory
воспроизводят функциональность, которая предоставляется членами уровня экземпляра, определенными в
DirectoryInfo
. Тем не менее, вспомните, что члены типа
Directory
обычно возвращают строковые данные, а не строго типизированные объекты
FileInfo/DirectoryInfo
.

Давайте взглянем на функциональность типа Directory; показанный ниже вспомогательный метод отображает имена всех логических устройств на текущем компьютере (с помощью метода

Directory.GetLogicalDrives()
) и применяет статический метод
Directory.Delete()
для удаления созданных ранее подкаталогов
\MyFolder
и
\MyFolder2\Data
:

static void FunWithDirectoryType()

{

<b>  // Вывести список всех логических устройств на текущем компьютере.</b>

  string[] drives = Directory.GetLogicalDrives();

362
{"b":"847442","o":1}