Студопедия

КАТЕГОРИИ:

АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция

Создание потоков, связанных с файлами




Обработка текстовых файлов

 

Методические указания

к лабораторной работе № 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. Они содержат определения констант, нужных для определения режимов создания и открытия файлов, режимов совместного доступа к файлу, а также позиции при произвольном доступе к файлам.

Все эти константы будут рассматриваться далее по мере изложения материала этого раздела.

Создание потоков, связанных с файлами

Если вам нужно создать входной или выходной поток, связанный с локальным файлом, содержащим двоичные данные, следует воспользоваться классами BinaryWriter и BinaryReader из библиотеки Microsoft .NET Framework. Что же касается чтения из файла или записи в файл текстовых данных, то для решения этой задачи обычно используются классы StreamReader и StreamWriter.

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

Обращаем ваше внимание на то, что система сборки мусора, встроенная в среду исполнения Microsoft .NET Framework, следит за использованием только объектов, находящихся в оперативной памяти, таких, как переменные, массивы, экземпляры объектов, созданных на базе классов и т. п. Что же касается потоков, связанных с файлами, то программист сам обязан следить за их открытием и закрытием.










Последнее изменение этой страницы: 2018-04-12; просмотров: 140.

stydopedya.ru не претендует на авторское право материалов, которые вылажены, но предоставляет бесплатный доступ к ним. В случае нарушения авторского права или персональных данных напишите сюда...