}
}
}
Исходный код. Проект MyDirectoryApp размещен в подкаталоге, соответствующем главе 16.
Работа с типом класса DriveInfo
В .NET 2.0 пространство имен System.IO предлагает класс с именем DriveInfo. Подобно Directory.GetLogicalDrives(), статический метод DriveInfo.GetDrives() позволяет выяснить имена дисков машины. Однако, в отличие от Directory.GetLogicalDrives(), класс DriveInfo обеспечивает множество дополнительной информации (например, информацию о типе диска, свободном пространстве, метке тома и т.д.). Рассмотрите следующий пример программного кода.
class Program {
static void Main(string[] args) {
Console.WriteLine("***** Забавы с DriveInfo *****\n'');
// Получение информации о дисках.
// Вывод информации о состоянии.
foreach(DriveInfo d in myDrives) {
Console.WriteLine("Имя: {0}", d. Name);
Console.WriteLine("Тип: {0}", d. DriveType);
// Проверка диска.
if (d.IsReady) {
Console.WriteLine("Свободно: {0}", d. TotalFreeSpace);
Console.WriteLine("Формат: {0}", d. DriveFormat);
Console.WriteLine("Метка тома: {0}\n", d. VolumeLabel);
}
}
Console.ReadLine();
}
}
На рис. 16.5 показан вывод, соответствующий состоянию моей машины.
Рис. 16.5. Сбор информации о дисках с помощью DriveInfo
Итак, мы рассмотрели некоторые возможности классов Directory.DirectoryInfo и DriveInfo. Далее вы узнаете, как создавать, открывать, закрывать и уничтожать файлы, присутствующие в каталоге.
Исходный код.Проект DriveTypeApp размещен в подкаталоге, соответствующем главе 16.
Работа с классом FileInfo
Как показывает пример MyDirectoryApp, класс FileInfo позволяет получить подробные сведения о файлах, имеющихся на вашем жестком диске (время создания, размер, атрибуты и т.д.), а также помогает создавать, копировать, перемещать и уничтожать файлы. Вдобавок к набору функциональных возможностей, унаследованных от FileSystemInfо, класс FileInfo имеет свои уникальные члены, и некоторые из них описаны в табл. 16.4.
Таблица 16.4.Наиболее важные элементы FileInfo
| Член |
Описание |
| AppendText() |
Создает тип StreamWriter (будет описан позже) для добавления текста в файл |
| CopyTo() |
Копирует существующий файл в новый файл |
| Create() |
Создает новый файл и возвращает тип FileStream (будет описан позже) для взаимодействия с созданным файлом |
| CreateText() |
Создает тип StreamWriter, который записывает новый текстовый файл |
| Delete() |
Удаляет файл, к которому привязан экземпляр FileInfo |
| Directory |
Получает экземпляр каталога родителя |
| DirectoryName |
Получает полный путь к каталогу родителя |
| Length |
Получает размер текущего файла или каталога |
| MoveTo() |
Перемещает указанный файл в новое место, имеет опцию для указания нового имени файла |
| Name |
Получает имя файла |
| Open() |
Открывает файл с заданными возможностями чтения/записи и совместного доступа |
| OpenRead() |
Создает FileStream с доступом только для чтения |
| OpenText() |
Создает тип StreamReader (будет описан позже) для чтения из существующего текстового файла |
| OpenWrite() |
Создает FileStream с доступом только для записи |
Важно понимать, что большинство членов класса FileInfo возвращает специальный объект ввода-вывода (FileStream, StreamWriter и т.д.), который позволит начать чтение или запись данных в соответствующем файле в самых разных форматах. Мы исследуем указанные типы чуть позже, а пока что давайте рассмотрим различные способы получения дескриптора файла с помощью типа класса FileInfo.
Первая возможность создания дескриптора файла обеспечивается методом FileInfo.Create().
public class Program {
static void Main(string[] args) {
// Создание нового файла на диске C.
FileInfo f = new FileInfо(@"C:\Test.dat");
FileStream fs = f.Create();
// Использование объекта FileStream.…
// Закрытие файлового потока.
fs.Close();
}
}
Обратите внимание на то, что метод FileInfo.Create() возвращает тип FileStream, который, в свою очередь, предлагает набор синхронных и асинхронных операций записи/чтения для соответствующего файла. Объект FileStream, возвращенный методом FileInfo.Create(), обеспечивает полный доступ чтения/записи всем пользователям.
Метод FileInfо.Open() можно использовать для того, чтобы открывать существующие файлы и создавать новые с более точными характеристиками, чем при использовании FileInfo.Create(). В результате вызова Open() возвращается объект FileStream. Рассмотрите следующий пример.
Читать дальше