При выполнении этой программы на экран ничего не выводится, но файл logfile. txt будет содержать следующее.
Это начало файла журнала регистрации.
0
1
2
3
4
5
6
7
8
9
Это конец файла журнала регистрации.
Попробуйте сами поупражняться в переадресации других встроенных потоков.
В приведенных ранее примерах демонстрировались возможности чтения и записи байтов или символов. Но ведь имеется также возможность (и ею пользуются часто) читать и записывать другие типы данных. Например, можно создать файл, содержащий данные типа int
, double
или short
. Для чтения и записи двоичных значений встроенных в C# типов данных служат классы потоков BinaryReader
и BinaryWriter
. Используя эти потоки, следует иметь в виду, что данные считываются и записываются во внутреннем двоичном формате, а не в удобочитаемой текстовой форме.
Класс BinaryWriter
служит оболочкой, в которую заключается байтовый поток, управляющий выводом двоичных данных. Ниже приведен наиболее часто употребляемый конструктор этого класса:
BinaryWriter(Stream output)
где FileStream
. Если же параметр ArgumentNullException
. А если поток, определяемый параметром ArgumentException
. По завершении вывода в поток типа BinaryWriter
его нужно закрыть. При этом закрывается и базовый поток.
В классе BinaryWriter
определены методы, предназначенные для записи данных всех встроенных в C# типов. Некоторые из этих методов перечислены в табл. 14.5. Обратите внимание на то, что строковые данные типа string
записываются во внутреннем формате с указанием длины строки. Кроме того, в классе BinaryWriter
определены стандартные методы Close()
и Flush()
, действующие аналогично описанному выше.
Таблица 14.5. Наиболее часто используемые методы, определенные в классе BinaryWriter
Метод - Описание
void Write(sbyte value) - Записывает значение типа sbyte со знаком
void Write(byte value) - Записывает значение типа byte без знака
void Write(byte[] buffer) - Записывает массив значений типа byte
void Write(short value) - Записывает целочисленное значение типа short (короткое целое)
void Write(ushort value) - Записывает целочисленное значение типа ushort (короткое целое без знака)
void Write (int value) - Записывает целочисленное значение типа int
void Write(uint value) - Записывает целочисленное значение типа uint (целое без знака)
void Write(long value) - Записывает целочисленное значение типа long (длинное целое)
void Write(ulong value) - Записывает целочисленное значение типа ulong (длинное целое без знака)
void Write(float value) - Записывает значение типа float (с плавающей точкой одинарной точности)
void Write(double value) - Записывает значение типа double (с плавающей точкой двойной точности)
void Write(decimal value) - Записывает значение типа decimal (с двумя десятичными разрядами после запятой)
void Write(char ch) - Записывает символ
void Write (char[] buffer) - Записывает массив символов
void Write(string value) Записывает строковое значение типа string, представленное во внутреннем формате с указанием длины строки
Класс BinaryReader
служит оболочкой, в которую заключается байтовый поток, управляющий вводом двоичных данных. Ниже приведен наиболее часто употребляемый конструктор этого класса:
BinaryReader(Stream input)
где FileStream
. Если же поток, определяемый параметром ArgumentException
. По завершении ввода из потока типа BinaryReader
его нужно закрыть. При этом закрывается и базовый поток.