Читаем C# 4.0: полное руководство полностью

      //А теперь считать отдельные буквы английского алфавита.

      f.Seek(0, SeekOrigin.Begin); // найти первый байт

      ch = (char) f.ReadByte() ;

      Console.WriteLine("Первая буква: " + ch) ;

      f.Seek(l, SeekOrigin.Begin); // найти второй байт

      ch = (char) f.ReadByte() ;

      Console.WriteLine("Вторая буква: " + ch);

      f.Seek(4, SeekOrigin.Begin); // найти пятый байт

      ch = (char) f.ReadByte() ;

      Console.WriteLine("Пятая буква: " + ch) ;

      Console.WriteLine() ;

      //А теперь прочитать буквы английского алфавита через одну.

      Console.WriteLine("Буквы алфавита через одну: ");

      for(int i=0; i < 26; i += 2) {

        f.Seek(i, SeekOrigin.Begin); // найти i-й символ

        ch = (char) f.ReadByte() ;

        Console.Write(ch + " ") ;

      }

    }

    catch(IOException exc) {

       Console.WriteLine("Ошибка ввода-вывода" + exc.Message);

    } finally {

      if(f != null) f.Close();

    }

    Console.WriteLine() ;

  }

}

При выполнении этой программы получается следующий результат.

Первая буква: А

Вторая буква: В

Пятая буква: Е

Буквы алфавита, через одну:

А С Е G I K M O Q S U W Y

Несмотря на то что метод Seek() имеет немало преимуществ при использовании с файлами, существует и другой способ установки текущего положения в файле с помощью свойства Position. Как следует из табл. 14.2, свойство Position доступно как для чтения, так и для записи. Поэтому с его помощью можно получить или же установить текущее положение в файле. В качестве примера ниже приведен фрагмент кода из предыдущей программы записи и чтения из файла с произвольным доступом random.dat, измененный с целью продемонстрировать применение свойства Position.

Console.WriteLine("Буквы алфавита через одну: ");

for(int i=0; i < 26; i += 2)    {

  f.Position = i; // найти i-й символ посредством свойства Position

  ch = (char) f.ReadByte();

  Console.Write(ch + " ");

}

<p>Применение класса MemoryStream</p>

Иногда оказывается полезно читать вводимые данные из массива или записывать выводимые данные в массив, а не вводить их непосредственно из устройства или выводить прямо на него. Для этой цели служит класс MemoryStream. Он представляет собой реализацию класса Stream, в которой массив байтов используется для ввода и вывода. В классе MemoryStream определено несколько конструкторов. Ниже представлен один из них:

MemoryStream(byte[] buffer)

где buffer обозначает массив байтов, используемый в качестве источника или адресата в запросах ввода-вывода. Используя этот конструктор, следует иметь в виду, что массив buffer должен быть достаточно большим для хранения направляемых в него данных.

В качестве примера ниже приведена программа, демонстрирующая применение класса MemoryStream в операциях ввода-вывода.

// Продемонстрировать применение класса MemoryStream.

using System;

using System.IO;

class MemStrDemo {

  static void Main() {

    byte[] storage = new byte[255];

    // Создать запоминающий поток.

    MemoryStream memstrm = new MemoryStream(storage);

    // чтения и записи данных в потоки.

    StreamWriter memwtr = new StreamWriter(memstrm);

    StreamReader memrdr = new StreamReader(memstrm);

    try {

      // Записать данные в память, используя объект memwtr.

      for(int i=0; i < 10; i++)

      memwtr.WriteLine("byte [" + i + "]: " + i);

      // Поставить в конце точку,

      memwtr.WriteLine(".");

      memwtr.Flush() ;

      Console.WriteLine("Чтение прямо из массива storage: ");

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

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

1С: Бухгалтерия 8 с нуля
1С: Бухгалтерия 8 с нуля

Книга содержит полное описание приемов и методов работы с программой 1С:Бухгалтерия 8. Рассматривается автоматизация всех основных участков бухгалтерии: учет наличных и безналичных денежных средств, основных средств и НМА, прихода и расхода товарно-материальных ценностей, зарплаты, производства. Описано, как вводить исходные данные, заполнять справочники и каталоги, работать с первичными документами, проводить их по учету, формировать разнообразные отчеты, выводить данные на печать, настраивать программу и использовать ее сервисные функции. Каждый урок содержит подробное описание рассматриваемой темы с детальным разбором и иллюстрированием всех этапов.Для широкого круга пользователей.

Алексей Анатольевич Гладкий

Программирование, программы, базы данных / Программное обеспечение / Бухучет и аудит / Финансы и бизнес / Книги по IT / Словари и Энциклопедии
1С: Управление торговлей 8.2
1С: Управление торговлей 8.2

Современные торговые предприятия предлагают своим клиентам широчайший ассортимент товаров, который исчисляется тысячами и десятками тысяч наименований. Причем многие позиции могут реализовываться на разных условиях: предоплата, отсрочка платежи, скидка, наценка, объем партии, и т.д. Клиенты зачастую делятся на категории – VIP-клиент, обычный клиент, постоянный клиент, мелкооптовый клиент, и т.д. Товарные позиции могут комплектоваться и разукомплектовываться, многие товары подлежат обязательной сертификации и гигиеническим исследованиям, некондиционные позиции необходимо списывать, на складах периодически должна проводиться инвентаризация, каждая компания должна иметь свою маркетинговую политику и т.д., вообщем – современное торговое предприятие представляет живой организм, находящийся в постоянном движении.Очевидно, что вся эта кипучая деятельность требует автоматизации. Для решения этой задачи существуют специальные программные средства, и в этой книге мы познакомим вам с самым популярным продуктом, предназначенным для автоматизации деятельности торгового предприятия – «1С Управление торговлей», которое реализовано на новейшей технологической платформе версии 1С 8.2.

Алексей Анатольевич Гладкий

Финансы / Программирование, программы, базы данных