Язык программирования C#9 и платформа .NET5 - Троелсен Эндрю
Шрифт:
Интервал:
Закладка:
Console.WriteLine("Here are your drives:");
foreach (string s in drives)
{
Console.WriteLine("--> {0} ", s);
}
<b> // Удалить ранее созданные подкаталоги.</b>
Console.WriteLine("Press Enter to delete directories");
Console.ReadLine();
try
{
Directory.Delete("MyFolder");
<b> // Второй параметр указывает, нужно ли удалять внутренние подкаталоги.</b>
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;
<b>// Получить информацию обо всех устройствах.</b>
DriveInfo[] myDrives = DriveInfo.GetDrives();
<b>// Вывести сведения об устройствах.</b>
foreach(DriveInfo d in myDrives)
{
Console.WriteLine("Name: {0}", d.Name); // имя
Console.WriteLine("Type: {0}", d.DriveType); // тип
<b> // Проверить, смонтировано ли устройство.</b>
if(d.IsReady)
{
Console.WriteLine("Free space: {0}", d.TotalFreeSpace);
// свободное пространство
Console.WriteLine("Format: {0}", d.DriveFormat); // формат устройства
Console.WriteLine("Label: {0}", d.VolumeLabel); // метка тома
}
Console.WriteLine();
}
Console.ReadLine();
(window.adrunTag = window.adrunTag || []).push({v: 1, el: 'adrun-4-390', c: 4, b: 390})Вот возможный вывод:
***** Fun with DriveInfo *****
Name: C:
Type: Fixed
Free space: 284131119104
Format: NTFS
Label: OS
Name: M:
Type: Network
Free space: 4711871942656
Format: NTFS
Label: DigitalMedia
К этому моменту вы изучили несколько основных линий поведения классов Directory, DirectoryInfо и DriveInfo. Далее вы ознакомитесь с тем, как создавать, открывать, закрывать и удалять файлы, находящиеся в заданном каталоге.
Работа с типом FileInfo
Как было показано в предыдущем примере DirectoryApp, класс FileInfo позволяет получать сведения о существующих файлах на жестком диске (такие как время создания, размер и атрибуты) и помогает создавать, копировать, перемещать и удалять файлы. В дополнение к набору функциональности, унаследованной от FileSystemInfo, класс FileInfo имеет ряд уникальных членов,которые описаны в табл. 20.4.
Обратите внимание, что большинство методов класса FileInfo возвращают специфический объект ввода-вывода (например, FileStream и StreamWriter), который позволяет начать чтение и запись данных в ассоциированный файл во множестве форматов. Вскоре мы исследуем указанные типы, но прежде чем рассмотреть работающий пример, давайте изучим различные способы получения дескриптора файла с использованием класса FileInfo.
Метод FileInfo.Create()
Следующий набор примеров находится в проекте консольного приложения по имени SimpleFileIO. Один из способов создания дескриптора файла предусматривает применение метода FileInfo.Create():
using System;
using System.IO;
Console.WriteLine("***** Simple IO with the File Type *****n");
// Измените это на папку на своей машине, к которой вы имеете доступ
// по чтению/записи или запускайте приложение от имени администратора.
var fileName = $@"C{Path.VolumeSeparatorChar}
{Path.DirectorySeparatorChar}temp
{Path.DirectorySeparatorChar}Test.dat";