Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Базовые технологии платформы .NET.pdf
Скачиваний:
65
Добавлен:
11.05.2015
Размер:
1.81 Mб
Скачать

17.2. Адаптеры потоков

Перейдём к рассмотрению классов-адаптеров для потоков. Классы BinaryReader и BinaryWriter позволяют при помощи своих методов читать и записывать в поток данные примитивных типов и массивов байтов или символов. Вся информация записывается в поток в двоичном представлении. Рассмотрим работу с этими классами на примере типа Student, который может записать свои данные в поток.

public class Student

 

{

 

public string Name { get; set; }

 

public int Age { get; set; }

 

public double GPA { get; set; }

// Grade Point Average

public void SaveBinaryToStream(Stream stream)

{

//конструктор позволяет "обернуть" адаптер вокруг потока var bw = new BinaryWriter(stream);

//BinaryWriter имеет 18 перегруженных версий метода Write() bw.Write(Name);

bw.Write(Age);

bw.Write(GPA);

//убеждаемся, что буфер BinaryWriter пуст

bw.Flush();

}

public void ReadBinaryFromStream(Stream stream)

{

var br = new BinaryReader(stream);

// для чтения каждого примитивного типа есть свой метод

Name = br.ReadString(); Age = br.ReadInt32(); GPA = br.ReadDouble();

}

}

Абстрактные классы TextReader и TextWriter дают возможность читать и записывать данные в поток в строковом представлении. При этом имеется поддержка асинхронного выполнения (методы вида ИмяОперацииAsync()). От этих классов наследуются классы StreamReader и StreamWriter. Представим методы для работы с данными класса Student с использованием StreamReader и

StreamWriter:

public void SaveToStream(Stream stream)

{

var sw = new StreamWriter(stream);

71