Язык программирования C#9 и платформа .NET5
В классе
также определен методFileSystemInfо. Он реализуется производными типами для удаления заданного файла или каталога с жесткого диска. Кроме того, перед получением информации об атрибутах можно вызвать методDelete(), чтобы обеспечить актуальность статистических данных о текущем файле или каталоге.Refresh()Работа с типом DirectoryInfо
Первый неабстрактный тип, связанный с вводом-выводом, который мы исследуем здесь —
. Этот класс содержит набор членов, используемых для создания, перемещения, удаления и перечисления каталогов и подкаталогов. В дополнение к функциональности, предоставленной его базовым классом (DirectoryInfo), классFileSystemInfопредлагает ключевые члены, описанные в табл. 20.3.DirectoryInfoРабота с типом
начинается с указания отдельного пути в параметре конструктора. Если требуется получить доступ к текущему рабочему каталогу (каталогу выполняющегося приложения), то следует применять обозначение в виде точки (DirectoryInfo). Вот некоторые примеры:.<b>// Привязаться к текущему рабочему каталогу.</b>DirectoryInfo dir1 = new DirectoryInfo(".");<b>// Привязаться к C:\Windows, используя дословную строку.</b>DirectoryInfo dir2 = new DirectoryInfo(@"C:\Windows");Во втором примере предполагается, что путь, передаваемый конструктору (
), уже существует на физической машине. Однако при попытке взаимодействия с несуществующим каталогом генерируется исключениеС:\Windows. Таким образом, чтобы указать каталог, который пока еще не создан, перед работой с ним понадобится вызвать методSystem.IO.DirectoryNotFoundException:Create()<b>// Привязаться к несуществующему каталогу, затем создать его.</b>DirectoryInfo dir3 = new DirectoryInfo(@"C:\MyCode\Testing");dir3.Create();Синтаксис пути, используемый в предыдущем примере, ориентирован на Windows. Если вы разрабатываете приложения .NET Core для разных платформ, тогда должны применять конструкции
иPath.VolumeSeparatorChar, которые будут выдавать подходящие символы на основе платформы. Модифицируйте предыдущий код, как показано ниже:Path.DirectorySeparatorCharDirectoryInfo dir3 = new DirectoryInfo($@"C{<b>Path.VolumeSeparatorChar}{Path.DirectorySeparatorChar}</b><b> MyCode{Path.DirectorySeparatorChar</b>}Testing");После создания объекта
можно исследовать содержимое лежащего в основе каталога с помощью любого свойства, унаследованного отDirectoryInfo. В целях иллюстрации создайте новый проект консольного приложения по имениFileSystemInfoи импортируйте в файл кода C# пространства именDirectorуАрриSystem. Измените классSystem.IO, добавив представленный далее новый статический метод, который создает объектProgram, отображенный наDirectoryInfo(при необходимости подкорректируйте путь), и выводит интересные статистические данные:С:\Windowsusing System;using System.IO;Console.WriteLine("***** Fun with Directory(Info) *****\n");ShowWindowsDirectoryInfo();Console.ReadLine();static void ShowWindowsDirectoryInfo(){<b> // Вывести информацию о каталоге. В случае работы не под</b><b> // управлением Windows подключитесь к другому каталогу.</b>DirectoryInfo dir = new DirectoryInfo($@"C{Path.VolumeSeparatorChar}{Path.DirectorySeparatorChar}Windows");Console.WriteLine("***** Directory Info *****");// Информация о каталоге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); // АтрибутыConsole.WriteLine("Root: {0}", dir.Root); // Корневой каталогConsole.WriteLine("**************************\n");}Вывод у вас может отличаться, но быть похожим:
***** Fun with Directory(Info) ********** Directory Info *****FullName: C:\WindowsName: WindowsParent:Creation: 3/19/2019 00:37:22Attributes: DirectoryRoot: C:\**************************Перечисление файлов с помощью типа DirectoryInfо
В дополнение к получению базовых сведений о существующем каталоге текущий пример можно расширить, чтобы задействовать некоторые методы типа
. Первым делом мы используем методDirectoryInfодля получения информации обо всех файлахGetFiles(), расположенных в каталоге*.jpg.С:\Windows\Web\Wallpaper
