
- •Лекция 11. Файлы в с# Основные понятия. Классы .Net для работы с файлами
- •Виды файлов
- •Алгоритм работы с файловыми потоками
- •Байтовые файлы (потоки)
- •Обработка исключительных ситуаций при работе с файлами
- •Текстовые файлы
- •Пример преобразования чисел, содержащихся в текстовом файле
- •Консольный ввод-вывод
- •Работа с каталогами и файлами
Лекция 11. Файлы в с# Основные понятия. Классы .Net для работы с файлами
Файл - именованная информация на внешнем носителе (на жестком или гибком магнитном диске). Логически файл можно представить как конечное количество последовательных байтов, поэтому такие устройства, как дисплей, клавиатура и принтер, также можно рассматривать как частные случаи файлов.
Передача данных с внешнего устройства в оперативную память называется чтением, или вводом, обратный процесс – записью, или выводом.
Чтение-запись в языке C# выполняется с помощью подсистемы ввода-вывода и классов библиотеки .NET. Рассмотрим обмен данными с файлами с помощью консоли, который реализуется с помощью потоков.
Поток (stream)– это любой перенос данных от источника к приемнику. Потоки обеспечивают работу как со стандартными, так и с определенными пользователем типами данных. Поток определяется как последовательность байтов и не зависит от конкретного устройства, с которым производиться обмен (оперативная память, файл на диске, клавиатура и принтер).
Обмен с потоком для повышения скорости передачи данных производиться, как правило, через специальную область оперативной памяти – буфер. Буфер выделяется для каждого открытого файла. При записи в файл вся информация сначала направляется в буфер и там накапливается до тех пор, пока весь буфер не заполниться. Только после этого и после специальной команды сброса происходит передача данных на внешнее устройство. При чтении из файла данные вначале считываются в буфер, причем не столько, сколько запрашивается, а сколько помещается в буфер. Механизм буферизации позволяет более быстро и эффективно обмениваться информацией с внешними устройствами.
Для поддержки потоков библиотека .NET содержит иерархию классов, основная часть которой представлена на рисунке 11.1 Эти классы определены в пространстве имен System.IO.
Рисунок 11.1 – Основные классы пространства имен System.IO
Классы библиотеки позволяют работать в различных режимах с файлами, каталогами и областями оперативной памяти. Краткое описание классов приведено в таблице 11.1.
Таблица 11.1 - Основные классы пространства имен System.IO
Класс Описание
BinaryReader, Чтение и запись значений простых встроенных типов
BinaryWriter (целочисленных, логических, строковых)
во внутренней форме представления
BufferedStream Временное хранение потока байтов (например, для последующего
переноса в постоянное хранилище)
Directory, Работа с каталогами или физическими файлами: создание,
DirectoryInfo, File, удаление, получение свойств. Возможности классов File и
FileInfo Directory реализованы в основном в виде статических методов.
Аналогичные классы DirectoryInfo и FileInfo используют обычные методы
FileStream Произвольный (прямой) доступ к файлу, представленному как
поток байтов
MemoryStream Произвольный доступ к потоку байтов в оперативной памяти
StreamWriter, Чтение из файла и запись в файл текстовой информации
StreamReader ( произвольный доступ не поддерживается )
StringReader, Работа с текстовой информацией в оперативной памяти
SrringReader
_________________________________________________________________________________