Герберт Шилдт - C# 4.0 полное руководство - 2011

Тут можно читать онлайн Герберт Шилдт - C# 4.0 полное руководство - 2011 - бесплатно полную версию книги (целиком) без сокращений. Жанр: Прочая старинная литература. Здесь Вы можете читать полную версию (весь текст) онлайн без регистрации и SMS на сайте лучшей интернет библиотеки ЛибКинг или прочесть краткое содержание (суть), предисловие и аннотацию. Так же сможете купить и скачать торрент в электронном формате fb2, найти и слушать аудиокнигу на русском языке или узнать сколько частей в серии и всего страниц в публикации. Читателям доступно смотреть обложку, картинки, описание и отзывы (комментарии) о произведении.

Герберт Шилдт - C# 4.0 полное руководство - 2011 краткое содержание

C# 4.0 полное руководство - 2011 - описание и краткое содержание, автор Герберт Шилдт, читайте бесплатно онлайн на сайте электронной библиотеки LibKing.Ru

C# 4.0 полное руководство - 2011 - читать онлайн бесплатно полную версию (весь текст целиком)

C# 4.0 полное руководство - 2011 - читать книгу онлайн бесплатно, автор Герберт Шилдт
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

Классы потоков

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

Основные классы потоков определены в пространстве имен System. 10. Для того чтобы воспользоваться этими классами, как правило, достаточно ввести приведенный ниже оператор в самом начале программы.

using System.10;

Пространство имен System. 10 не указывается для консольного ввода-вывода потому, что для него определен класс Console в пространстве имен System.

Класс Stream '

Основным для потоков является класс System. 10. Stream. Он представляет байтовый поток и является базовым для всех остальных классов потоков. Кроме того, он является абстрактным классом, а это означает, что получить экземпляр объекта класса Stream нельзя. В классе Stream определяется ряд операций со стандартными потоками, представленных соответствующими методами. В табл. 14.1 перечислен ряд наиболее часто используемых методов, определенных в классе Stream.

Таблица 14.1. Некоторые методы, определенные в классе stream

Метод

Описание

void Close ()

Закрывает поток

void Flush()

Выводит содержимое потока на физическое устройство

int ReadByte()

Возвращает целочисленное представление следующего байта, доступного для ввода из потока. При обнаружении конца файла возвращает значение -1

int Read(byte[] buffer,

Делает попытку ввести count байтов в массив

int offset, int count)

buffer, начиная с элемента buffer[offset]. Возвращает количество успешно введенных байтов

long Seek(long offset,

Устанавливает текущее положение в потоке по указан

SeekOrigin origin)

ному смещению offset относительно заданного начала отсчета origin. Возвращает новое положение в потоке

void WriteByte(byte value)

Выводит один байт в поток вывода

void Write(byte[] buffer,

Выводит подмножество count байтов из массива

int offset,

buffer , начиная с элемента buffer'i offset] . Воз

int count)

вращает количество выведенных байтов

Некоторые из методов, перечисленных в табл. 14.1, генерируют исключение IOException при появлении ошибки ввода-вывода. Если же предпринимается попытка выполнить неверную операцию, например вывести данные в поток, предназначенный только для чтения, то генерируется исключение NotSupportedException. Кроме того, могут быть сгенерированы и другие исключения — все зависит от конкретного метода.

Следует заметить, что в классе Stream определены методы для ввода (или чтения) и вывода (или записи) данных. Но не все потоки поддерживают обе эти операции, поскольку поток можно открывать только для чтения или только для записи. Кроме того, не все потоки поддерживают запрос текущего положения в потоке с помощью метода Seek (). Для того чтобы определить возможности потока, придется воспользоваться одним, а то и несколькими свойствами класса Stream. Эти свойства перечислены в табл. 14.2 наряду со свойствами Length и Position, содержащими длину потока и текущее положение в нем.

Таблица 14.2. Свойства, определенные в классе Stream

Свойство

Описание

bool CanRead bool CanSeek

Принимает значение true,если из потока можно ввести данные. Доступно только для чтения

Принимает значение true,если поток поддерживает запрос текущего положения в потоке. Доступно только для чтения

Свойство

Описание

bool CanWrite

Принимает значение true,если в поток можно вывести данные. До

ступно только для чтения

long Length

Содержит длину потока. Доступно только для чтения

long Position

Представляет текущее положение в потоке. Доступно как для чтения,

так и для записи

int ReadTimeout

Представляет продолжительность времени ожидания в операциях

ввода. Доступно как для чтения, так и для записи

int' WriteTimeout

Представляет продолжительность времени ожидания в операциях

вывода. Доступно как для чтения, так и для записи

Классы байтовых потоков

Производными от класса Stream являются несколько конкретных классов байтовых потоков. Эти классы определены в пространстве имен System. 10 и перечислены ниже.

Класс потока

Описание

BufferedStream

Заключает в оболочку байтовый поток и добавляет буфериза

цию. Буферизация, как правило, повышает производительность

FileStream

Байтовый поток, предназначенный для файлового ввода-

вывода

MemoryStream

Байтовый поток, использующий память для хранения данных

UnmanagedMemoryStream

Байтовый поток, использующий неуправляемую память для

хранения данных

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

Классы-оболочки символьных потоков

Для создания символьного потока достаточно заключить байтовый поток в один из классов-оболочек символьных потоков. На вершине иерархии классов символьных потоков находятся абстрактные классы TextReader и TextWriter. Так, класс TextReader организует ввод, а класс TextWriter — вывод. Методы, определенные в обоих этих классах, доступны для всех их подклассов. Они образуют минимальный набор функций ввода-вывода, которыми должны обладать все символьные потоки.

В табл. 14.3 перечислены методы ввода, определенные в классе TextReader. В целом, эти методы способны генерировать исключение IOException при появлении ошибки ввода, а некоторые из них — исключения других типов. Особый интерес вызывает метод ReadLine (), предназначенный для ввода целой текстовой строки, возвращая ее в виде объекта типа string. Этот метод удобен для чтения входных данных, содержащих пробелы. В классе TextReader имеется также метод Close (), определяемый следующим образом.

Читать дальше
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать


Герберт Шилдт читать все книги автора по порядку

Герберт Шилдт - все книги автора в одном месте читать по порядку полные версии на сайте онлайн библиотеки LibKing.




C# 4.0 полное руководство - 2011 отзывы


Отзывы читателей о книге C# 4.0 полное руководство - 2011, автор: Герберт Шилдт. Читайте комментарии и мнения людей о произведении.


Понравилась книга? Поделитесь впечатлениями - оставьте Ваш отзыв или расскажите друзьям

Напишите свой комментарий
x