Рейтинговые книги
Читем онлайн Язык программирования C#9 и платформа .NET5 - Троелсен Эндрю

Шрифт:

-
+

Интервал:

-
+

Закладка:

Сделать
1 ... 357 358 359 360 361 362 363 364 365 ... 642

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

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

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

Работа с типом 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:MyCodeTesting&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 (при необходимости подкорректируйте путь), и выводит интересные статистические данные:

(window.adrunTag = window.adrunTag || []).push({v: 1, el: 'adrun-4-390', c: 4, b: 390})

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, расположенных в каталоге С:WindowsWebWallpaper.

1 ... 357 358 359 360 361 362 363 364 365 ... 642
На этой странице вы можете бесплатно читать книгу Язык программирования C#9 и платформа .NET5 - Троелсен Эндрю бесплатно.
Похожие на Язык программирования C#9 и платформа .NET5 - Троелсен Эндрю книги

Оставить комментарий