Язык программирования C#9 и платформа .NET5
Шрифт:
Console.WriteLine("***************************\n");
}
}
Обратите внимание на указание в вызове
GetFiles
варианта поиска; SearchOption.AllDirectories
обеспечивает просмотр всех подкаталогов корня. В результате запуска приложения выводится список файлов, которые соответствуют поисковому шаблону. Создание подкаталогов с помощью типа DirectoryInfo
Посредством метода
DirectoryInfo.CreateSubdirectory
можно программно
.
), несколькими специальными подкаталогами:
static void ModifyAppDirectory
{
DirectoryInfo dir = new DirectoryInfo(".");
// Создать \MyFolder в каталоге запуска приложения.
dir.CreateSubdirectory("MyFolder");
// Создать \MyFolder2\Data в каталоге запуска приложения.
dir.CreateSubdirectory(
$@"MyFolder2{Path.DirectorySeparatorChar}Data");
}
Получать возвращаемое значение метода
CreateSubdirectory
не обязательно, но важно знать, что в случае его успешного выполнения возвращается объект DirectoryInfo
, представляющий вновь созданный элемент. Взгляните на следующую модификацию предыдущего метода:
static void ModifyAppDirectory
{
DirectoryInfo dir = new DirectoryInfo(".");
// Создать \MyFolder в начальном каталоге.
dir.CreateSubdirectory("MyFolder");
// Получить возвращенный объект DirectoryInfo.
DirectoryInfo myDataFolder = dir.CreateSubdirectory(
$@"MyFolder2{Path.DirectorySeparatorChar}Data");
// Выводит путь к ..\MyFolder2\Data.
Console.WriteLine("New Folder is: {0}", myDataFolder);
}
Вызвав метод
ModifyAppDirectory
в операторах верхнего уровня и запустив программу, в проводнике Windows можно будет увидеть новые подкаталоги. Работа с типом Directory
Вы видели тип
DirectoryInfo
в действии и теперь готовы к изучению типа Directory
. По большей части статические члены типа Directory
воспроизводят функциональность, которая предоставляется членами уровня экземпляра, определенными в DirectoryInfo
. Тем не менее, вспомните, что члены типа Directory
обычно возвращают строковые данные, а не строго типизированные объекты FileInfo/DirectoryInfo
. Давайте взглянем на функциональность типа Directory; показанный ниже вспомогательный метод отображает имена всех логических устройств на текущем компьютере (с помощью метода
Directory.GetLogicalDrives
) и применяет статический метод Directory.Delete
для удаления созданных ранее подкаталогов \MyFolder
и \MyFolder2\Data
:
static void FunWithDirectoryType
{
// Вывести список всех логических устройств на текущем компьютере.
string[] drives = Directory.GetLogicalDrives;
Console.WriteLine("Here are your drives:");
foreach (string s in drives)
{
Console.WriteLine("--> {0} ", s);
}
// Удалить ранее созданные подкаталоги.
Console.WriteLine("Press Enter to delete directories");
Console.ReadLine;
try
{
Directory.Delete("MyFolder");
// Второй параметр указывает, нужно ли удалять внутренние подкаталоги.
Directory.Delete("MyFolder2", true);
}
catch (IOException e)
{
Console.WriteLine(e.Message);
}
}
Работа с типом DriveInfo
Пространство имен
System.IO
содержит класс по имени DriveInfo
. Подобно Directory.GetLogicalDrives
статический метод DriveInfo.GetDrives
позволяет выяснить имена устройств на машине. Однако в отличие от Directory.GetLogicalDrives
метод DriveInfo.GetDrives
предоставляет множество дополнительных деталей (например, тип устройства, доступное свободное пространство и метка тома). Взгляните на следующие операторы верхнего уровня в новом проекте консольного приложения DriveInfоАрр
:
using System;
using System.IO;
// Получить информацию обо всех устройствах.
DriveInfo[] myDrives = DriveInfo.GetDrives;
// Вывести сведения об устройствах.
foreach(DriveInfo d in myDrives)
{
Console.WriteLine("Name: {0}", d.Name); // имя
Console.WriteLine("Type: {0}", d.DriveType); // тип
// Проверить, смонтировано ли устройство.
if(d.IsReady)
{
Console.WriteLine("Free space: {0}", d.TotalFreeSpace);
// свободное пространство
Console.WriteLine("Format: {0}", d.DriveFormat); // формат устройства
Console.WriteLine("Label: {0}", d.VolumeLabel); // метка тома
}
Console.WriteLine;
Поделиться с друзьями: