- •Лабораторная работа № 9
- •Содержание
- •1. Теоретическая часть
- •1.1 Потоки
- •1.2 Классы для ввода-вывода
- •1.3 Объект FileStream
- •1.4 Позиция внутри файла
- •1.5 Асинхронный доступ к файлам
- •2. Практическая часть
- •2.1 Чтение данных из файла с произвольным доступом
- •2.2 Запись данных в файл с произвольным доступом
- •2.3 Работа с потоками. Выходной поток
- •2.4 Работа с потоками. Входной поток
- •2.5 Асинхронное считывание файлов с использованием событий
- •3. Задания
Лабораторная работа № 9
Тема: Работа с файлами
Цель: Научится использовать потоки ввода-вывода, изучить методы С# для работы с файловой системой
Содержание
Содержание 109
1. Теоретическая часть 109
1.1 Потоки 109
1.2 Классы для ввода-вывода 110
1.3 Объект FileStream 110
1.4 Позиция внутри файла 111
1.5 Асинхронный доступ к файлам 111
2. Практическая часть 111
2.1 Чтение данных из файла с произвольным доступом 111
2.2 Запись данных в файл с произвольным доступом 112
2.3 Работа с потоками. Выходной поток 113
2.4 Работа с потоками. Входной поток 114
2.5 Асинхронное считывание файлов с использованием событий 114
3. Задания 116
1. Теоретическая часть
В этой работе рассматривается, каким образом можно осуществлять считывание и запись текстовых файлов. Будут рассмотрены основные классы, которые используются для создания файлов, чтения из файлов и записи в них, а также вспомогательные классы, которые используются для выполнения различных манипуляций над файловой системой из программ на С#. Файлы могут оказаться очень удобным средством сохранения информации при работе с несколькими вариантами приложения, они могут также использоваться для обмена данными между приложениями. Конфигурации пользователя и приложения также могут храниться в файлах, для того чтобы впоследствии извлекаться при очередном запуске приложения.
Будут рассмотрены понятия:
Что такое поток, и каким образом в .NET используются классы для работы с потоками для доступа к файлам
Как можно использовать объект File для выполнения манипуляций над структурой файла
Как осуществляется запись в файл
Как осуществляется чтение из файла
Как можно осуществлять доступ к файлам синхронно (ко всем сразу) и асинхронно (по группам)
1.1 Потоки
Любой ввод и вывод информации в .NET Framework включает в себя использование потоков — абстрактных представлений последовательного устройства. Последовательное устройство — это нечто, обеспечивающее как последовательное хранение данных, так и последовательный доступ к ним — по одному байту в каждый конкретный момент времени. В качестве такого устройства могут выступать расположенный на диске файл, принтер, область памяти, а также любой другой объект, который допускает последовательное считывание и запись информации.
Рассматривая такое устройство как абстрактное, мы можем скрыть назначение источник потока. Такой уровень абстракции делает возможным многократное использование кода и позволяет создавать подпрограммы более общего назначения, которые одинаково работают с принтером, файловой системой, файлами в сети.
1.2 Классы для ввода-вывода
В пространстве имен system.ioхранятся классы, предназначенные для считывания данных из файлов и записи данных в файлы; для того чтобы получить в программе доступ к этим классам, необходимо сослаться на это пространство имен.
Классы, используемые для файлового ввода-вывода:
File — класс, который обладает большим количеством статических методов, позволяющих переносит, копировать и удалять файлы.
Directory — класс, который обладает большим количеством статических методов, позволяющих переносить, копировать и удалять директории.
Path — класс, позволяющий выполнять манипуляции над именами путей.
Fileinfo — представляет физический файл, расположенный на диске, и обладает методами, позволяющими выполнять манипуляции над этим файлом. Для любых операций чтения/записи, выполняемых над файлом, необходимо создавать объект stream.
Directoryinfо — представляет физическую директорию, расположенную на диске, и обладает методами, позволяющими выполнять манипуляции над этой директорией.
FileStream — представляет файл, который допускает либо считывание, либо запись, либо и то, и другое одновременно. Этот файл может считываться и записываться как асинхронно, так и синхронно.
StreamReader — считывает символьную информацию из потока и может создаваться на базе класса FileStream.
StreamWriter — записывает символьную информацию в поток и может создаваться на базе класса FileStream.
FileSystemWatcher — это один из наиболее сложных классов. Он используется для слежения за состоянием файлов и директорий и генерирует события в моменты, когда изменяется их местоположение, что позволяет перехватывать их внутри приложения. Такая функциональная возможность отсутствовала при программировании в среде Windows.