Вход/Регистрация
ЯЗЫК ПРОГРАММИРОВАНИЯ С# 2005 И ПЛАТФОРМА .NET 2.0. 3-е издание
вернуться

Троелсен Эндрю

Шрифт:

Таблица 16.1. Ключевые типы пространства имен System.IO

Неабстрактный тип класса ввода-вывода Описание
BinaryReader BinaryWriter Позволяют сохранять и читать примитивные типы данных (целые, логические, строковые и другие), как двоичные значения
BufferedStream Обеспечивает временное хранилище для потока байтов, которые можно будет направить в другое хранилище позже
Directory DirectoryInfо Используются для работы со структурой каталогов машины. Тип Directory предлагает свои функциональные возможности, в основном через статические методы. Тип DirectoryInfo обеспечивает аналогичные возможности с помощью подходящей объектной переменной
DriveInfo Этот тип (появившийся в .NET 2.0) предлагает подробную информацию о дисках, установленных на машине
File FileInfo Используются для работы с файлами. Тип File предлагает свои функциональные возможности, в основном через статические методы. Тип FileInfo обеспечивает аналогичные возможности с помощью подходящей объектной переменной
FileStream Позволяет реализовать произвольный доступ к файлам (например, поиск), когда данные представлены в виде потока байтов
FileSystemWatcher Позволяет контролировать изменения внешнего файла
MemoryStream Обеспечивает прямой доступ к данным, сохраненным в памяти, а не в физическом файле
Path Выполняет операции с типами System.String, содержащими информацию о файлах или каталогах в независимом от платформы виде
StreamWriter StreamReader Используются для записи (и чтения) текстовой информации файлов. Эти типы не поддерживают доступ к файлам с произвольной организацией
StringWriter StringReader Подобно типам StreamReader/StreamWriter, эти классы тоже обеспечивают обработку текстовой информации. Однако соответствующим хранилищем в данном случае является строковый буфер, а не физический файл

Типы Directory(Info) и File(Info)

Пространство System.IO предлагает четыре типа, позволяющие как обработку отдельных файлов, так и взаимодействие со структурой каталогов машины. Первые два из этих типов – Directory и File – с помощью различных статических членов позволяют выполнение операций создания, удаления, копирования и перемещения файлов. Родственные типы FileInfo и DirectoryInfo предлагают аналогичные возможности в виде методов экземпляра (который, таким образом, необходимо будет создать). На рис. 16.1 показана схема зависимости типов, связанных с обработкой каталогов и файлов. Обратите внимание на то, что типы Directory и File расширяют непосредственно System.Object, в то время как DirectoryInfo и FileInfo получаются из абстрактного типа FileSystemInfo.

Рис. 16.1. Типы, обеспечивающие работу с каталогами и файлами

Вообще говоря, FileInfо и DirectoryInfо являются лучшим выбором для рекурсивных операций (таких как, например, составление перечня всех подкаталогов с данным корнем), поскольку члены классов Directory и File обычно возвращает строковые значения, а не строго типизированные объекты.

Абстрактный базовый класс FileSystemInfo

Типы DirectoryInfo и FileInfo во многом наследуют свое поведение от абстрактного базового класса FileSystemInfo. По большей части члены класса FileSystemInfo используются для получения общих характеристик (таких как, например, время создания, различные атрибуты и т.д.) соответствующего файла иди каталога. В табл. 16.2 описаны свойства FileSystemInfo, представляющие наибольший интерес.

Таблица 16.2. Свойства FileSystemInfo

Свойство Описание
Attributes Читает или устанавливает атрибуты, связанные с текущим файлом, представленным в перечне FileAttributes
CreationTime Читает или устанавливает время создания для текущего файла или каталога
Exists Может использоваться для выяснения того, существует ли данный файл или каталог
Extension Читает расширение файла
FullName Получает полный путь каталога или файла
LastAccesTime Читает или устанавливает время последнего доступа к текущему файлу или каталогу
LastWriteTime Читает или устанавливает время последнего сеанса записи в текущий файл или каталог
Name Для файлов получает имя файла. Для каталогов получает имя последнего каталога в иерархии, если такая иерархия существует. Иначе получает имя каталога

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

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

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

Таблица 16.3. Основные члены типа DirectoryInfo

Члены Описание
Create CreateSubdirectory Создает каталог (или множество подкаталогов) в соответствии с заданным именем пути
Delete Удаляет каталог и все его содержимое
GetDirectories Возвращает массив строк, представляющих все подкаталоги текущего каталога
GetFiles Получает массив типов FileInfo, представляющих множество файлов данного каталога
MoveTo Перемещает каталог и его содержимое в место, соответствующее заданному новому пути
Parent Получает каталог родителя указанного пути
Root Получает корневую часть пути

Мы начнем работу с типом DirectoryInfo с попытки указать конкретный путь каталога для использования в качестве параметра конструктора. Чтобы получить доступ к текущему каталогу приложения (т.е. к каталогу приложения, выполняющегося в данный момент), используйте обозначение ".". Вот подходящие примеры.

// Привязка к текущему каталогу приложения.

DirectoryInfo dir1 = new DirectoryInfo(".");

// Привязка к C:\Windows с помощью строки,

// для которой указано "дословное" применение.

DirectoryInfo dir2 = new DirectoryInfo(@"C:\Windows");

Во втором примере предполагается, что передаваемый конструктору путь (путь C:\Windows) уже существует на данной физической машине. Если вы попытаетесь взаимодействовать с несуществующим каталогом, будет сгенерировано исключение System.IO.DirectoryNotFoundException (каталог не найден). Поэтому если вы укажете каталог, который еще не создан, то перед его использованием вам придется сначала вызвать метод Create.

  • Читать дальше
  • 1
  • ...
  • 256
  • 257
  • 258
  • 259
  • 260
  • 261
  • 262
  • 263
  • 264
  • 265
  • 266
  • ...

Ебукер (ebooker) – онлайн-библиотека на русском языке. Книги доступны онлайн, без утомительной регистрации. Огромный выбор и удобный дизайн, позволяющий читать без проблем. Добавляйте сайт в закладки! Все произведения загружаются пользователями: если считаете, что ваши авторские права нарушены – используйте форму обратной связи.

Полезные ссылки

  • Моя полка

Контакты

  • chitat.ebooker@gmail.com

Подпишитесь на рассылку: