Программирование >>  Программирование с использованием ajax 

1 ... 241 242 243 [ 244 ] 245 246 247 ... 396


Потоки

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

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

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

□ Выходные. Выходные потоки используются, когда данные пишутся в некоторое внешнее место назначения, которым может быть физический дисковый файл, местоположение в сети, принтер или другг1я программа. Понимание потокового программирования открывает множество замечательных возможностей. Материал этой главы сконцентрирован на данных файловой системы, поэтому мы сосредоточимся только на записи в дисковые файлы.

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

Классы ввода и вывода

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

Классы, описанные в этой главе, перечислены в табл. 24.1.



Object (System)

MarshalByRefObject (System)

System (System.10)

Directory (System.10)

File (System.10)

Path (System.10)

FileStream (System.10)

FileSystemlnfo (System.10)

Component (System)

Filelnfo (System.10)

Directorylnfo (System.10)

FileSystemWatcher (System.lO)

TextReader (System.lO)

TextWriter (System.lO)

Stream Reader (System.lO)

StreamWriter (System.lO)

Puc. 24.1. Классы ввода-вывода Таблица 24.1. Классы ввода-вывода, рассматриваемые в настоящей главе

Класс

Описание

File

Directory Path

Filelnfo

Directorylnfo FileSystemlnfo

FileStream StreamReader

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

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

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

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

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

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

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

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



Окончание табл. 24.1

Класс Описание

StreamWriter Пишет символьные данные в поток и может быть создан с использованием

класса FiieStream в качестве базового

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

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

Вы также ознакомитесь с пространством имен System. 10.Compression, которое позволяет читать и писать в сжатые файлы, применяя либо сжатие GZIP, либо схему сжатия Deflate.

□ Def latest ream. Представляет поток, в котором данные сжимаются автоматически при записи или автоматически распаковываются при чтении. Сжатие обеспечивается посредством алгоритма Deflate.

а GZipStream. Представляет поток, в котором данные сжимаются автоматически при записи или автоматически распаковываются при чтении. Сжатие обеспечивается алгоритмом GZIP.

И, наконец, вы изучите сериализацию объектов с использованием пространства имен System.Runtime. Serialization и его дочерних пространств имен. Прежде всего, мы рассмотрим класс BinaryFormatter из пространства имен System.Runtine. Serialization.Formatters.Binary, который позволяет сериализовывать объекты в потоки в двоичном виде, а затем десериализовывать их.

Классы File и Directory

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

Некоторые из наиболее полезных статических методов класса File перечислены в табл. 24.2.

Таблица 24.2. Некоторые статические методы класса File Метод Описание

Сору () Копирует файл из исходного местоположения в целевое

Create () Создает файл по указанному пути

Delete О Удалят файл

Open () Возвращает объект FileStream, находящийся по указанному пути

Move () Перемещает указанный файл в новое место. Вы можете специфицировать

другое имя файла в его новом местоположении

Некоторые полезные статические методы класса Directory описаны в табл. 24.3.



1 ... 241 242 243 [ 244 ] 245 246 247 ... 396

© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки.
Яндекс.Метрика