В классе BinaryReader
определены методы, предназначенные для чтения данных всех встроенных в C# типов. Некоторые из этих методов перечислены в табл. 14.6. Следует, однако, иметь в виду, что в методе Readstring()
считывается символьная строка, хранящаяся во внутреннем формате с указанием ее длины. Все методы данного класса генерируют исключение IOException
, если возникает ошибка ввода. Кроме того, могут быть сгенерированы и другие исключения.
Таблица 14.6. Наиболее часто используемые методы, определенные в классе BinaryReader
Метод - Описание
bool ReadBoolean() - Считывает значение логического типа bool
byte ReadByte() - Считывает значение типа byte
sbyte ReadSByte() - Считывает значение типа sbyte
byte[] ReadBytes(int
char ReadChar() - Считывает значение типа char
char[] ReadChars(int
decimal ReadDecimal() - Считывает значение типа decimal
double ReadDouble() - Считывает значение типа double
float ReadSingle() - Считывает значение типа float
short Readlnt16() - Считывает значение типа short
int Readlnt32() - Считывает значение типа int
long Readlnt64() - Считывает значение типа long
ushort ReadUIntl6() - Считывает значение типа ushort
uint ReadUInt32() - Считывает значение типа uint
ulong ReadUInt64() - Считывает значение типа ulong
string ReadString() - Считывает значение типа string, представленное во внутреннем двоичном формате с указанием длины строки. Этот метод следует использовать для считывания строки, которая была записана средствами класса BinaryWriter
В классе BinaryWriter
определены также три приведенных ниже варианта метода Read()
.
При неудачном исходе операции чтения эти методы генерируют исключение IOException
. Кроме того, в классе BinaryReader
определен стандартный метод Close().
Метод - Описание
int Read() - Возвращает целочисленное представление следующего доступного символа из вызывающего потока ввода. При обнаружении конца файла возвращает значение -1
int Read(byte []
int Read(char[]
Демонстрирование двоичного ввода-вывода
Ниже приведен пример программы, в котором демонстрируется применение классов BinaryReader и BinaryWriter для двоичного ввода-вывода. В этой программе в файл записываются и считываются обратно данные самых разных типов.
// Записать двоичные данные, а затем считать их обратно.
using System;
using System.IO;
class RWData {
static void Main() {
BinaryWriter dataOut;
BinaryReader dataIn;
int i = 10;
double d = 1023.56;
bool b = true;
string str = "Это тест";
// Открыть файл для вывода,
try {
dataOut = new
BinaryWriter(new FileStream("testdata", FileMode.Create));
}
catch(IOException exc) {
Console.WriteLine("Ошибка открытия файла:" + exc.Message); return;
}
// Записать данные в файл,
try {
Console.WriteLine("Запись " + i);
dataOut.Write(i);
Console.WriteLine("Запись " + d);
dataOut.Write(d);
Console.WriteLine("Запись " + b);
dataOut.Write(b);
Console.WriteLine("Запись " + 12.2 * 7.4);
dataOut.Write(12.2 * 7.4);
Console.WriteLine("Запись " + str);
dataOut.Write(str);
}
catch(IOException exc) {
Console.WriteLine("Ошибка ввода-вывода:\n" + exc.Message);
} finally {
dataOut.Close();
}