В классе BinaryReader определены методы, предназначенные для чтения данных всех встроенных в C# типов. Некоторые из этих методов перечислены в табл. 14.6. Следует, однако, иметь в виду, что в методе Readstring() считывается символьная строка, хранящаяся во внутреннем формате с указанием ее длины. Все методы данного класса генерируют исключение IOException, если возникает ошибка ввода. Кроме того, могут быть сгенерированы и другие исключения.

Таблица 14.6. Наиболее часто используемые методы, определенные в классе BinaryReader

Метод - Описание

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 ReadUIntl6() - Считывает значение типа ushort

uint ReadUInt32() - Считывает значение типа uint

ulong ReadUInt64() - Считывает значение типа ulong

string ReadString() - Считывает значение типа string, представленное во внутреннем двоичном формате с указанием длины строки. Этот метод следует использовать для считывания строки, которая была записана средствами класса BinaryWriter

В классе 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], и возвращает количество успешно считанных символов

<p>Демонстрирование двоичного ввода-вывода</p>

Ниже приведен пример программы, в котором демонстрируется применение классов 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();

    }

Перейти на страницу:

Похожие книги