Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторная работа9_C#.doc
Скачиваний:
118
Добавлен:
23.03.2015
Размер:
143.87 Кб
Скачать

117

Лабораторная работа № 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.