![]() Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Двоичные потоки
Для выполнения операций ввода/вывода данных различных типов без их преобразований предназначены классы BinaryReader и ВinaryWriter. Важно понимать, что эти данные считываются и записываются с использованием внутреннего двоичного формата, а не в текстовой форме, понятной человеку.
рис.2
Наиболее употребительный конструктор класса BinaryWriter имеет вид: BinaryWriter (Stream stream [, Encoding])
Наиболее употребительный конструктор класса BinaryReader имеет вид: BinaryReader (Stream stream [, Encoding])
stream - поток, в который будут записываться/ считываться данные.
Чтобы записать двоичные данные в файл или прочитать из файла, можно использовать для этого параметра объект, созданный классом FileStream.
Методы вывода данных класса BinaryWriter
Методы ввода данных, определенные в классе BinaryReader
Исключения, генерируемые классами BinaryReader и ВinaryWriter:
Пример. (Без обработки исключений.) // Запись в файл двоичных данных с последующим их считыванием. using System; using System.IO;
class RWData { public static void Main() { BinaryWriter dataOut; BinaryReader dataIn; FileStream fs;
int i = 10; double d = 1023.56; bool b = true;
fs = new FileStream (" testdata", FileMode.Create); dataOut = new BinaryWriter (fs);
dataOut.Write (i); dataOut.Write (d); dataOut.Write (b); dataOut.Write (12.2 * 7.4);
dataOut.Close();
// Теперь попробуем прочитать эти данные. fs = new FileStream (" testdata", FileMode.Open); dataIn = new BinaryReader(fs);
i = dataIn.ReadInt32(); d = dataIn.ReadDouble(); b = dataIn.ReadBoolean(); d = dataIn.ReadDouble();
dataIn.Close();
Console.WriteLine (" Прочитали " + i); Console.WriteLine (" Прочитали " + d); Console.WriteLine (" Прочитали " + b); Console.WriteLine (" Прочитали " + d); } }
Пример. С обработкой исключений. // Запись в файл двоичных данных с последующим их считыванием. using System; using System.IO;
class RWData { public static void Main() { BinaryWriter dataOut; BinaryReader dataIn; FileStream fs;
int i = 10; double d = 1023.56; bool b = true;
try { fs = new FileStream(" testdata", FileMode.Create); dataOut = new BinaryWriter(fs); } catch (IOException exc) { Console.WriteLine(exc.Message + " \nHe удается открыть файл."); return; }
try { dataOut.Write(i); dataOut.Write(d); dataOut.Write(b); dataOut.Write(12.2 * 7.4); } catch (IOException exc) { Console.WriteLine(exc.Message + " \nОшибка при записи."); }
dataOut.Close();
// Теперь попробуем прочитать эти данные. try { fs = new FileStream(" testdata", FileMode.Open); dataIn = new BinaryReader(fs); } catch (FileNotFoundException exc) { Console.WriteLine(exc.Message + " \nHe удается открыть файл."); return; }
try { i = dataIn.ReadInt32(); d = dataIn.ReadDouble(); b = dataIn.ReadBoolean(); d = dataIn.ReadDouble(); } catch (IOException exc) { Console.WriteLine(exc.Message + " Ошибка при считывании."); } dataIn.Close(); Console.WriteLine(" Прочитали " + i); Console.WriteLine(" Прочитали " + d); Console.WriteLine(" Прочитали " + b); Console.WriteLine(" Прочитали " + d); } }
|