Двійкові файли зберігають дані в тому ж вигляді, в якому вони представлені в оперативній пам'яті, тобто у внутрішній формі представлення. Двійкові файли застосовуються не для перегляду їх людиною, а для використання в програмах. Вихідний потік BinaryWriter підтримує довільний доступ, тобто є можливість виконувати запис в довільну позицію двійкового файлу.
 Двійковий файл відкривається на основі базового потоку, який найчастіше використовує потік FileStream.
 Основні методи двійкових потоків приведені в таблицях 11.8 і 11.9.
  
 Таблиця 11.8
 Найбільш важливі елементи класу BinaryWriter
  
   | Елемент | Опис | 
  | BaseStream | Базовий потік, з яким працює об'єкт ВinaryWriter | 
  | Close | Закрити потік | 
  | Flush | Очистити буфер | 
  | Seek | Встановити позицію в потоці | 
  | Write | Записати значення в потік | 
 
  
 Таблиця 11.9
 Найбільш важливі елементи класу BinaryReader
  
   | Елемент | Опис | 
  | BaseStream | Базовий потік, з яким працює об'єкт BinaryReader | 
  | Close | Закрити потік | 
  | PeekChar | Повернути наступний символ без переміщення внутрішнього покажчика в потоці | 
  | Read | Рахувати потік байтів або символів і зберегти в масиві | 
  | ReadXXXX | Рахувати з потоку дані певного типу (наприклад, Readboolean, Readbyte, ReadInt32 і т. д.) | 
 
  
 У лістингу 11.7 приведений приклад формування двійкового файлу. У файл записується послідовність дійсних чисел, а потім для демонстрації довільного доступу третє число замінюється числом 8888.
  
 Лістинг 11.7. Формування двійкового файлу
 using System;
 using System.IO;
 namespace examp81
 {
 class Class1
 {
 static void Main()
 {
 try
 {
 BinaryWriter fout = new BinaryWriter(
 new FileStream(@"D:\1.txt", FileMode.Create));
 double d = 0;
 while ( d < 4 )
 {
 fout.Write( d );
 d += 0.33;
 };
 fout.Seek( 16, SeekOrigin.Begin ); // другий елемент файлу
 fout.Write( 8888d );
 fout.Close();
 }
 catch( Exception e )
 {
 Console.WriteLine( "Error: " + e.Message );
 return;
 }
 }
 }
 }
 При створенні двійкового потоку в нього передається об'єкт базового потоку. При установці покажчика поточної позиції у файлі враховується довжина кожного значення типу doublе - 8 байт.
 У лістингу 11.8 приводиться програма, яка за допомогою екземпляра Binaryreader прочитує вміст файлу в масив дійсних чисел, а потім виводить цей масив на екран.
 При читанні береться до уваги, що метод ReadDoublе при виявленні кінця файлу генерує виключення EndOfStreamException. Оскільки в даному випадку це не помилка, тіло обробника виключень порожнє.
  
 Лістинг 11.8. Читання двійкового файлу
 using System;
 using System.IO;
 namespace examp82
 {
 class Class1
 {
 static void Main()
 {
 try
 {
 FileStream f =
 new FileStream( @"D:\1.txt", FileMode.Open );
 BinaryReader fin = new BinaryReader( f );
 long n = f.Length / 8; // кількість чисел у файлі
 double[] х = new double[n];
 long i = 0;
 try
 {
 while (true) х[i++] = fin.ReadDouble(); // читання
 }
 catch ( EndOfStreamException e ) {}
 foreach (double d in х) Console.Write(" " + d); // виведення
 fin.Close();
 f.Close();
 }
 catch ( FileNotFoundException e )
 {
 Console.WriteLine( e.Message );
 Console.WriteLine( " Перевірте правильність імені файлу!" );
 return;
 }
 catch ( Exception e )
 {
 Console.WriteLine( "Error: " + e.Message );
 return;
 }
 }
 }
 }
 Результат роботи програми:
  
 0 0,33 8888 0,99 1,32 1,65 1,98 2,31 2,64 2,97 3,3 3,63 3,96