Класс BinaryWriter
служит оболочкой, в которую заключается байтовый поток, управляющий выводом двоичных данных. Ниже приведен наиболее часто употребляемый конструктор этого класса:
BinaryWriter(Stream output)
где output
обозначает поток, в который выводятся записываемые данные. Для записи в выходной файл в качестве параметра output
может быть указан объект, создаваемый средствами класса FileStream
. Если же параметр output
оказывается пустым, то генерируется исключение ArgumentNullException
. А если поток, определяемый параметром output
, не был открыт для записи данных, то генерируется исключение ArgumentException
. По завершении вывода в поток типа BinaryWriter
его нужно закрыть. При этом закрывается и базовый поток.
В классе BinaryWriter
определены методы, предназначенные для записи данных всех встроенных в C# типов. Обратите внимание на то, что строковые данные типа string
записываются во внутреннем формате с указанием длины строки. Кроме того, в классе BinaryWriter
определены стандартные методы Close()
и Flush()
, действующие аналогично описанному выше.
Метод | Описание |
---|---|
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 , представленное во внутреннем формате с указанием длины строки |
Наиболее часто используемые методы, определенные в классе BinaryWriter
BinaryReader
Класс BinaryReader
служит оболочкой, в которую заключается байтовый поток, управляющий вводом двоичных данных. Ниже приведен наиболее часто
употребляемый конструктор этого класса:
BinaryReader(Stream input)
где input
обозначает поток, из которого вводятся считываемые данные. Для чтения из входного файла в качестве параметра input
может быть указан объект, создаваемый средствами класса FileStream
. Если же поток, определяемый параметром input
, не был открыт для чтения данных или оказался недоступным по иным причинам, то генерируется исключение ArgumentException
. По завершении ввода из потока типа BinaryReader
его нужно закрыть. При этом закрывается и базовый поток.
В классе BinaryReader
определены методы, предназначенные для чтения данных всех встроенных в C# типов. Следует, однако, иметь в виду, что в методе ReadString()
считывается символьная строка, хранящаяся во внутреннем формате с указанием ее длины. Все методы данного класса генерируют исключение IOException
, если возникает ошибка ввода. Кроме того, могут быть сгенерированы и другие исключения.
Метод | Описание |
---|---|
bool ReadBoolean() | Считывает значение логического типа bool |
byte ReadByte() | Считывает значение типа byte |
sbyte ReadSByte() | Считывает значение типа sbyte |
byte [ ] ReadBytes (int count) | Считывает количество count байтов и возвращает их в виде массива |
char ReadChar() | Считывает значение типа char |
char [ ] ReadChars (int count) | Считывает количество count символов и возвращает их в виде массива |
decimal ReadDecimal() | Считывает значение типа decimal |
double ReadDouble() | Считывает значение типа double |
float ReadSingle() | Считывает значение типа float |
short Readlnt16() | Считывает значение типа short |
int Readlnt32() | Считывает значение типа int |
long Readlnt64() | Считывает значение типа long |
ushort ReadUInt16() | Считывает значение типа ushort |
uint ReadUInt32() | Считывает значение типа uint |
ulong ReadUInt64() | Считывает значение типа ulong |
string ReadString() | Считывает значение типа string , представленное во внутреннем двоичном формате с указанием длины строки. Этот метод следует использовать для считывания строки, которая была записана средствами класса BinaryWriter |
Методы, определенные в классе BinaryReader
для чтения данных всех встроенных в C# типов
В классе BinaryWriter
определены также три приведенных ниже варианта метода Read()
. При неудачном исходе операции чтения эти методы генерируют исключение IOException
. Кроме того, в классе BinaryReader
определен стандартный метод Close()
.
Метод | Описание |
---|---|
int Read() | Возвращает целочисленное представление следующего доступного символа из вызывающего потока ввода. При обнаружении конца файла возвращает значение -1 |
int Read(byte [] buffer, int offset, int count) | Делает попытку прочитать количество count байтов в массив buffer , начиная с элемента buffer[offset] , и возвращает количество успешно считанных байтов |
int Read(char[]buffer,int offset, int count) | Делает попытку прочитать количество count символов в массив buffer , начиная с элемента buffer [offset] ,и возвращает количество успешно считанных символов |
Наиболее часто используемые методы, определенные в классе BinaryReader
Чтение и запись двоичных данных | Демонстрирование двоичного ввода-вывода |