Классы для работы с потоками текстовых символов
Министерство образования и науки РФ
Тверской государственный технический университет
Кафедра автоматизации технологических процессов
Обработка текстовых файлов
Методические указания
к лабораторной работе № 2 по дисциплине
«Информационные технологии»
для студентов специальности УТС ЗФ
Тверь, 2016
Цель работы
Освоить работу с текстовыми файлами. Создавать и использовать собственные функции.
Теоретический материал
Файлы и потоки
Большинство программ, так или иначе, работают с каталогами и файлами. Средства для работы с файлами предусмотрены практически в любом языке программирования. Эти средства могут быть встроены непосредственно в язык, а также входить в стандартные библиотеки функций и классов, поставляющихся вместе с компилятором.
Программы, составленные на языке С#, работают с каталогами и файлами при помощи специально предназначенных для этого классов, входящих в состав библиотеки классов Microsoft .NET Framework.
Все операции с файлами выполняются в программах С# с помощью так называемых потоков данных (data stream). Программы могут выполнять над потоками данных 3 операции:
· запись данных в поток,
· чтение данных из потока,
· позиционирование.
Для потоков, связанных с файлами, определено также такое понятие, как текущая позиция внутри файла. Перед началом операций ввода-вывода программа должна открыть поток. При этом текущая позиция устанавливается на начало файла. При чтении файла или записи в файл блоков данных текущая позиция сдвигается к концу файла на количество байтов, равное размеру прочитанного или записанного блока данных. При помощи средств позиционирования программа может установить текущую позицию в произвольное место файла. Когда работа с файлом закончена, программа обязательно должна закрыть соответствующий поток явным образом.
|
|
Программа С# может работать с потоками нескольких типов:
· стандартными потоками ввода и вывода,
· потоками, связанными с локальными файлами,
· потоками, связанными с файлами в оперативной памяти.
Стандартные потоки и классы
Стандартные потоки
Стандартные потоки обычно связаны с консолью и клавиатурой, но могут быть перенаправлены в файлы средствами операционной системы. По своему назначению эти потоки больше всего напоминают стандартные потоки ввода и вывода, а также стандартный поток вывода сообщений об ошибках.
Практически все программы работают со стандартными потоками ввода и вывода. Для вывода данных в стандартный поток вывода применялись методы System.Console.Write() и System.Console.WriteLine(). Ввод данных из стандартного потока выполнялся с помощью метода System.Console.ReadLine().
|
|
Основные классы ввода и вывода
Классы, реализующие операции с файлами, достаточно многочисленны. Тем не менее, можно выделить основные группы действий, которые необходимы при работе с файлами, и классы, методы которых выполняют эти действия.
Класс BinaryReader предназначен для чтения блоков данных из потоков ввода на уровне отдельных байтов. Обычно для чтения объектов из файлов, таких, как строки и числа, программисты используют другие, более мощные классы.
Класс BinaryWriter служит в качестве низкоуровневого средства записи данных в потоки вывода.
Класс File предназначен для работы с оглавлениями каталогов. С помощью статических методов этого класса можно получить список файлов и каталогов, расположенных в заданном каталоге, создать или удалить каталог, переименовать файл или каталог, а также выполнить некоторые другие операции.
С помощью статических методов класса Directory программа может получать списки каталогов и подкаталогов, создавать и удалять каталоги, а также выполнять над каталогами другие подобные операции.
Класс Path обеспечивает методы и свойства, с помощью которых программы могут работать с именами и полными путями каталогов.
|
|
Классы для работы с потоками
На базе класса System.IO.Stream создано несколько производных классов, специально предназначенных для работы с потоками ввода и вывода.
Класс FileStream, как это видно из его названия, предназначен для работы с файлами через потоки ввода и вывода. Он обеспечивает позиционирование внутри потоков ввода и вывода методом Seek. Это позволяет выполнять прямой доступ к файлам.
С помощью класса CryptoStream можно организовать ввод и вывод данных в зашифрованном виде.
Класс MemoryStream позволяет создавать файлы в оперативной памяти. Доступ к таким файлам осуществляется очень быстро, так как не требуется работать с медленными дисковыми устройствами. Обычно файлы в оперативной памяти создаются для временного хранения данных, потому что после выключения компьютера содержимое этих файлов исчезнет.
С помощью класса NetworkStream можно осуществлять удаленный ввод и вывод данных через сетевое соединение.
Класс BufferedStream обеспечивает буферизацию при работе с потоками ввода и вывода. Буферизация операций ввода и вывода в большинстве случаев значительно ускоряет работу приложений, так как при ее использовании сокращается количество обращений к системе для обмена данными с внешними устройствами.
|
|
Классы для работы с потоками текстовых символов
Специально для работы с потоками текстовых символов в кодировке UNICODE в библиотеке классов Microsoft .NET Framework предусмотрены классы System.IO.TextReader и System.IO.TextWriter. Первый из этих классов предназначен для потоков ввода, а второй — для потоков вывода.
С помощью класса StreamReader, созданного на основе класса System.IO.TextReader, программа может читать отдельные байты входного потока символов. Аналогично класс StreamWriter, созданный на основе класса System.IO.TextWriter, позволяет писать байты символов в выходной поток.
Классы StringReader и StringWriter, созданные на базе классов System.IO.TextReader и System.IO.TextWriter, соответственно предназначены для чтения и записи текстовых строк, т.е. данных типа string.
Перечисления
При работе с потоками, файлами и каталогами используются перечисления FileAccess, FileMode, FileShare и SeekOrigin. Они содержат определения констант, нужных для определения режимов создания и открытия файлов, режимов совместного доступа к файлу, а также позиции при произвольном доступе к файлам.
Все эти константы будут рассматриваться далее по мере изложения материала этого раздела.
Дата добавления: 2018-04-05; просмотров: 201; Мы поможем в написании вашей работы! |
Мы поможем в написании ваших работ!