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

В классе

FileSystemInfо
также определен метод
Delete()
. Он реализуется производными типами для удаления заданного файла или каталога с жесткого диска. Кроме того, перед получением информации об атрибутах можно вызвать метод
Refresh()
, чтобы обеспечить актуальность статистических данных о текущем файле или каталоге.

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

Первый неабстрактный тип, связанный с вводом-выводом, который мы исследуем здесь —

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

Язык программирования C#9 и платформа .NET5 - _129.png

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

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

<b>// Привязаться к текущему рабочему каталогу.</b>

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

<b>// Привязаться к C:\Windows, используя дословную строку.</b>

DirectoryInfo dir2 = new DirectoryInfo(@&quot;C:\Windows&quot;);

Во втором примере предполагается, что путь, передаваемый конструктору (

С:\Windows
), уже существует на физической машине. Однако при попытке взаимодействия с несуществующим каталогом генерируется исключение
System.IO.DirectoryNotFoundException
. Таким образом, чтобы указать каталог, который пока еще не создан, перед работой с ним понадобится вызвать метод
Create()
:

<b>// Привязаться к несуществующему каталогу, затем создать его.</b>

DirectoryInfo dir3 = new DirectoryInfo(@&quot;C:\MyCode\Testing&quot;);

dir3.Create();

Синтаксис пути, используемый в предыдущем примере, ориентирован на Windows. Если вы разрабатываете приложения .NET Core для разных платформ, тогда должны применять конструкции

Path.VolumeSeparatorChar
и
Path.DirectorySeparatorChar
, которые будут выдавать подходящие символы на основе платформы. Модифицируйте предыдущий код, как показано ниже:

DirectoryInfo dir3 = new DirectoryInfo(

  $@&quot;C{<b>Path.VolumeSeparatorChar}{Path.DirectorySeparatorChar}</b>

<b>  MyCode{Path.DirectorySeparatorChar</b>}Testing&quot;);

После создания объекта

DirectoryInfo
можно исследовать содержимое лежащего в основе каталога с помощью любого свойства, унаследованного от
FileSystemInfo
. В целях иллюстрации создайте новый проект консольного приложения по имени
DirectorуАрр
и импортируйте в файл кода C# пространства имен
System
и
System.IO
. Измените класс
Program
, добавив представленный далее новый статический метод, который создает объект
DirectoryInfo
, отображенный на
С:\Windows
(при необходимости подкорректируйте путь), и выводит интересные статистические данные:

using System;

using System.IO;

Console.WriteLine(&quot;***** Fun with Directory(Info) *****\n&quot;);

ShowWindowsDirectoryInfo();

Console.ReadLine();

static void ShowWindowsDirectoryInfo()

{

<b>  // Вывести информацию о каталоге. В случае работы не под</b>

<b>  // управлением Windows подключитесь к другому каталогу.</b>

  DirectoryInfo dir = new DirectoryInfo($@&quot;C{Path.VolumeSeparatorChar}

  {Path.DirectorySeparatorChar}Windows&quot;);

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

                        // Информация о каталоге

  Console.WriteLine(&quot;FullName: {0}&quot;, dir.FullName);     // Полное имя

  Console.WriteLine(&quot;Name: {0}&quot;, dir.Name);             // Имя каталога

  Console.WriteLine(&quot;Parent: {0}&quot;, dir.Parent);         // Родительский каталог

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

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

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

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

}

Вывод у вас может отличаться, но быть похожим:

***** Fun with Directory(Info) *****

***** Directory Info *****

FullName: C:\Windows

Name: Windows

Parent:

Creation: 3/19/2019 00:37:22

Attributes: Directory

Root: C:\

**************************

Перечисление файлов с помощью типа DirectoryInfо

В дополнение к получению базовых сведений о существующем каталоге текущий пример можно расширить, чтобы задействовать некоторые методы типа

DirectoryInfо
. Первым делом мы используем метод
GetFiles()
для получения информации обо всех файлах
*.jpg
, расположенных в каталоге
С:\Windows\Web\Wallpaper
.

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