Часть II. Объектно-ориентированное программирование
Поля:
Null
— задает объект
BinaryWriter
без резервного участка;
OutStream
— содержит основной поток.
Основные члены класса
BinaryReader
:
BaseStream
— свойство (предназначено только для чтения) обеспе-
чивает доступ к потоку, используемому объектом класса
BinaryReader
;
Close()
— закрывает двоичный поток;
PeekChar()
— "заглядывает вперед": возвращает следующий доступ-
ный символ потока без перемещения текущей позиции потока (не
сдвигает указатель потока);
Read()
— читает заданный набор байтов и сохраняет их в передан-
ном ему массиве;
Readxxxx()
— метод похож на соответствующие методы класса
BinaryWriter
, только вместо записи извлекает из двоичного потока
объекты различных типов (
Boolean
,
Int16
,
Int32
и т. д.).
Пример использования классов
BinaryWriter
и
BinaryReader
показан
в приложении, приведенном в листинге 16.11, а результат выполнения
приложения — на рис. 16.11.
Листинг 16.11
/* Created by SharpDevelop;
* User: user
* Date: 03.01.2013
* Time: 13:29
*
* To change this template use Tools | Options | Coding |
* Edit Standard Headers; */
using System;
using System.IO;
namespace app87.binarywriterreader
{
class Program
{
public static void Main(string[] args)
Глава 16. Файловый ввод-вывод
389
{
Console.WriteLine("Работа с классами " +
"BinaryWriters/Readers \n");
// Открыть двоичную запись в файл.
/* У BinaryWriter нет своего метода Open(),
* но его можно взять из класса FileInfo */
FileInfo f = new FileInfo(@"D:\BinFile.txt");
BinaryWriter bw = new BinaryWriter(f.OpenWrite());
// Вывести свойство BaseStream
Console.WriteLine("Base stream :: {0}",
bw.BaseStream);
// Записать в поток различные данные:
double aDouble = 1234.67;
int anlnt = 34567;
string aString = "A,B,C";
bw.Write(aDouble);
bw.Write(anlnt);
bw.Write(aString);
bw.Close();
Console.WriteLine("Чтение данных из потока:\n");
BinaryReader br = new BinaryReader(f.OpenRead());
Console.WriteLine("Число типа double: {0}",
aDouble);
Console.WriteLine("Число типа Int: {0}", anlnt);
Console.WriteLine("Строка символов: {0}", aString);
Console.Read();
}
}
}
Отметим, что у класса
BinaryWriter
нет своего метода
Open()
, поэтому
данный метод берется из класса
FileInfo
. При этом метод
f.OpenWrite()
возвращает тип
FileStream
, который вставлен в конст-
руктор класса
BinaryWriter
. Дело в том, что конструктор
BinaryWriter
принимает любой тип, унаследованный от класса
Stream
, в том числе и
тип
FileStream
.
390
Do'stlaringiz bilan baham: |