Страница 213 из 502
<b>Запись True </b>
<b>Запись 90.28 </b>
<b>Запись Это тест</b>
<b>Чтение 10 </b>
<b>Чтение 1023.56 </b>
<b>Чтение True </b>
<b>Чтение 90.28 </b>
<b>Чтение Это тест</b>
Если просмотреть содержимое файла testdata, который получается при выполнении этой программы, то можно обнаружить, что он содержит данные в двоичной, а не в удобочитаемой текстовой форме.
Далее следует более практический пример, демонстрирующий, насколько эффективным может быть двоичный ввод-вывод. Для учета каждого предмета хранения на складе в приведенной ниже программе сначала запоминается наименование предмета, имеющееся в наличии, количество и стоимость, а затем пользователю предлагается ввести наименование предмета, чтобы найти его в базе данных. Если предмет найден, отображаются сведения о его запасах на складе.
<b>/* Использовать классы BinaryReader и BinaryWriter для</b>
<b>реализации простой программы учета товарных запасов. */</b>
<b>using System; </b>
<b>using System.IO;</b>
<b>class Inventory {</b>
<b> static void Main() {</b>
<b> BinaryWriter dataOut;</b>
<b> BinaryReader dataIn;</b>
<b> string item; // наименование предмета</b>
<b> int onhand; // имеющееся в наличии количество</b>
<b> double cost; // цена</b>
<b> try {</b>
<b> dataOut = new</b>
<b> BinaryWriter(new FileStream("inventory.dat", FileMode.Create));</b>
<b> }</b>
<b> catch(IOException exc) {</b>
<b> Console.WriteLine("He удается открыть файл " +</b>
<b> "товарных запасов для вывода");</b>
<b> Console.WriteLine("Причина: " + exc.Message); </b>
<b> return;</b>
<b> }</b>
<b> // Записать данные о товарных запасах в файл, </b>
<b> try {</b>
<b> dataOut.Write("Молотки"); </b>
<b> dataOut.Write(10); </b>
<b> dataOut.Write(3.95);</b>
<b> dataOut.Write("Отвертки"); </b>
<b> dataOut.Write(18); </b>
<b> dataOut.Write(1.50);</b>
<b> dataOut.Write("Плоскогубцы"); </b>
<b> dataOut.Write(5);</b>
<b> dataOut.Write(4.95);</b>
<b> dataOut.Write("Пилы");</b>
<b> dataOut.Write(8);</b>
<b> dataOut.Write(8.95);</b>
<b> }</b>
<b> catch(IOException exc) {</b>
<b> Console.WriteLine("Ошибка записи в файл товарных запасов");</b>
<b> Console.WriteLine("Причина: " + exc.Message);</b>
<b> } finally {</b>
<b> dataOut.Close();</b>
<b> }</b>
<b> Console.WriteLine() ;</b>
<b> // А теперь открыть файл товарных запасов для чтения,</b>
<b> try {</b>
<b> dataIn = new</b>
<b> BinaryReader(new FileStream("inventory.dat", FileMode.Open));</b>
<b> }</b>
<b> catch(IOException exc) {</b>
<b> Console.WriteLine("He удается открыть файл " +</b>
<b> "товарных запасов для ввода");</b>
<b> Console.WriteLine("Причина: " + exc.Message); return;</b>
<b> }</b>
<b> // Найти предмет, введенный пользователем.</b>
<b> Console.Write("Введите наименование для поиска: ");</b>
<b> string what = Console.ReadLine() ;</b>
<b> Console.WriteLine();</b>
<b> try {</b>
<b> for (;;) {</b>
<b> // Читать данные о предмете хранения,</b>
<b> item = dataIn.ReadString(); </b>
<b> onhand = dataIn.ReadInt32();</b>
<b> cost = dataIn.ReadDouble();</b>