Добавить в цитаты Настройки чтения

Страница 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(&quot;inventory.dat&quot;, FileMode.Create));</b>

<b>    }</b>

<b>    catch(IOException exc) {</b>

<b>      Console.WriteLine(&quot;He удается открыть файл &quot; +</b>

<b>            &quot;товарных запасов для вывода&quot;);</b>

<b>      Console.WriteLine(&quot;Причина: &quot; + exc.Message); </b>

<b>      return;</b>

<b>    }</b>

<b>    // Записать данные о товарных запасах в файл, </b>

<b>    try {</b>

<b>      dataOut.Write(&quot;Молотки&quot;); </b>

<b>      dataOut.Write(10); </b>

<b>      dataOut.Write(3.95);</b>

<b>      dataOut.Write(&quot;Отвертки&quot;); </b>

<b>      dataOut.Write(18); </b>

<b>      dataOut.Write(1.50);</b>

<b>      dataOut.Write(&quot;Плоскогубцы&quot;); </b>

<b>      dataOut.Write(5);</b>

<b>      dataOut.Write(4.95);</b>

<b>      dataOut.Write(&quot;Пилы&quot;);</b>

<b>      dataOut.Write(8);</b>

<b>      dataOut.Write(8.95);</b>

<b>    }</b>

<b>    catch(IOException exc) {</b>

<b>      Console.WriteLine(&quot;Ошибка записи в файл товарных запасов&quot;);</b>

<b>      Console.WriteLine(&quot;Причина: &quot; + 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(&quot;inventory.dat&quot;, FileMode.Open));</b>

<b>    }</b>

<b>    catch(IOException exc) {</b>

<b>      Console.WriteLine(&quot;He удается открыть файл &quot; +</b>

<b>           &quot;товарных запасов для ввода&quot;);</b>

<b>      Console.WriteLine(&quot;Причина: &quot; + exc.Message); return;</b>

<b>    }</b>

<b>    // Найти предмет, введенный пользователем.</b>

<b>    Console.Write(&quot;Введите наименование для поиска: &quot;);</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>