Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Экзамен в гаи redacted.doc
Скачиваний:
5
Добавлен:
27.09.2019
Размер:
676.35 Кб
Скачать

2.Потоковый ввод-вывод. Работа с файлами/каталогами

Весь ввод и вывод в .NET Framework подразумевает использование потоков. Поток (stream) - это абстрактное представление последовательного устройства. Последовательное устройство (serial device) — это нечто такое, что хранит данные в линейной манере и точно таким же образом обеспечивает доступ к ним: по одному байту за раз. Это устройство может быть дисковым файлом, сетевым каналом, местом в памяти или любым другим объектом, поддерживающим чтение и запись в линейном режиме. Сохранение устройства абстрактным означает, что лежащие в основе источник/приемник данных могут быть скрыты. Такой уровень абстракции обеспечивает повторное использование кода и позволяет писать более обобщенные процедуры, потому что нет необходимости заботиться о действительной специфике передачи данных. Таким образом, сходный код может быть передан и повторно использован, когда приложение читает из входного файлового потока, сетевого входного потока или любого другого вида потока.

Существуют два типа потоков:

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

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

System. I0 содержит классы для чтения данных из файлов и записи их в файлы, и вы можете ссылаться на эти пространства имен в приложении С#, чтобы получить доступ к этим классам без полной квалификации имен типов.

  • File Статический служебный класс, предоставляющий множество статических методов для перемещения, копирования и удаления файлов

  • Directory Статический служебный класс, предоставляющий множество статических методов для перемещения, копирования и удаления каталогов

  • Path Служебный класс, используемый для манипулирования путевыми именами

  • Filelnfo Представляет физический файл на диске, имеет методы для манипулирования этим файлом. Для любого, кто читает или пишет в этот файл, должен быть создан объект stream

  • Directorylnfo Представляет физический каталог на диске и имеет методы для манипулирования этим каталогом

  • FileSystemlnfo Служит базовым классом ДЛЯ Filelnfo и Directorylnfo, обеспечивая возможность работы с файлами и каталогами одновременно, используя полиморфизм

  • FileStream Представляет файл, который может быть записан, прочитан или то и другое. Этот файл может быть записан или прочитан как синхронно, так и асинхронно

  • StreamReader Читает символьные данные из потока и может быть создан с использованием класса FileStream в качестве базового

  • streamWriter Пишет символьные данные в поток и может быть создан с использованием класса FileStream в качестве базового

  • FileSystemWatcher Наиболее развитый класс, который рассматривается в этой главе.

Используется для мониторинга файлов и каталогов и представляет события, которые приложение может перехватить, когда в этих объектах происходят какие-то изменения. Этой функциональности всегда недоставало в программировании для Windows, но теперь .NET Framework значительно облегчает задачу реагирования на события файловой системы.

Классы File и Directory. Служебные классы File и Directory предоставляют множество статических методов для удивительно исчерпывающего манипулирования файлами и каталогами. Эти методы дают возможность перемещать файлы, опрашивать и обновлять атрибуты, а также создавать объекты FileStream.