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 KMOQSUWY
Несмотря на то что метод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 + " ");
}
Применение класса MemoryStream
Иногда оказывается полезно читать вводимые данные из массива или записывать выводимые данные в массив, а не вводить их непосредственно из устройства или выводить прямо на него. Для этой цели служит классMemoryStream.Он представляет собой реализацию классаStream,в которой массив байтов используется для ввода и вывода. В классеMemoryStreamопределено несколько конструкторов. Ниже представлен один из них:
MemoryStream(byte[ ]
где
В качестве примера ниже приведена программа, демонстрирующая применение классаMemoryStreamв операциях ввода-вывода.
// Продемонстрировать применение класса MemoryStream.
using System; using System.10;
class MemStrDemo { static void Main {