double arrow

Работа с файлами

Под файлом обычно подразумевается именованная информация на внешнем носи­теле, например на жестком или гибком магнитном диске. Логически файл можно представить как конечное количество последовательных байтов, поэтому такие устройства, как дисплей, клавиатура и принтер, также можно рассматривать как частные случаи файлов.

Передача данных с внешнего устройства в оперативную память называется чтением, или вводом, обратный процесс — записью, или выводом. Ввод-вывод в С# выполняется с помощью подсистемы ввода-вывода и классов библиотеки.NET. В этой главе рассматривается обмен данными с файлами и их частным случаем — консолью. Обмен данными реализуется с помощью потоков.

Поток (stream)1 - это абстрактное понятие, относящееся к любому переносу данных от источника к приемнику.

1 Не путать с потоком выполнения, описанным в предыдущей главе. Впрочем, и в обыч­ной речи мы часто обозначаем одним и тем же словом совершенно разные вещи!

Потоки обеспечивают надежную работу как со стандартными, так и с определенными пользователем типами данных, а также единообразный и понятный синтаксис. Поток определяется как последователь­ность байтов и не зависит от конкретного устройства, с которым производится обмен (оперативная память, файл на диске, клавиатура или принтер). Обмен с потоком для повышения скорости передачи данных производится, как правило, через специальную область оперативной памяти — буфер. Буфер выде­ляется для каждого открытого файла. При записи в файл вся информация сначала направляется в буфер и там накапливается до тех пор, пока весь буфер не запол­нится. Только после этого или после специальной команды сброса происходит передача данных на внешнее устройство. При чтении из файла данные вначале считываются в буфер, причем не столько, сколько запрашивается, а сколько по­мещается в буфер.

Механизм буферизации позволяет более быстро и эффективно обмениваться информацией с внешними устройствами.

Рис. 11.1. Классы библиотеки.NET для работы с потоками

Классы библиотеки позволяют работать в различных режимах с файлами, ката­логами и областями оперативной памяти. Краткое описание классов приведено в табл. 11.1.

Таблица 11.1. Основные классы пространства имен System.IO
Класс Описание

BinaryReader, Чтение и запись значений простых встроенных типов

BinaryWriter (целочисленных, логических, строковых и т. п.) во внутренней форме

представления Временное хранение потока байтов (например, для

последующего переноса в постоянное хранилище)

Directory, Работа с каталогами или физическими файлами: создание, удаление,

DirectoryInfo, File, получение свойств. Возможности классов File и Directory реализованы в

основном в виде статических методов. Аналогичные классы DirectoryInfo и

FileInfo используют обычные методы

FileStream Произвольный (прямой) доступ к файлу, представленному как поток байтов

MemoryStream Произвольный доступ к потоку байтов в оперативной памяти

StreamWriter, Чтение из файлаи запись в файл текстовой информации

StreamReader (произвольный доступ не поддерживается)

StringWriter, Работа с текстовой информацией в оперативной памяти


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



Сейчас читают про: