2014-02-23 3 views
6

У меня есть источник ниже:Как узнать текущее смещение BinaryReader в C#?

public static void DisplayValues() 
{ 
    float aspectRatio; 
    string tempDirectory; 
    int autoSaveTime; 
    bool showStatusBar; 

    if (File.Exists(fileName)) 
    { 
     using (BinaryReader reader = new BinaryReader(File.Open(fileName, FileMode.Open))) 
     { 
      aspectRatio = reader.ReadSingle(); 
      tempDirectory = reader.ReadString(); 
    ------------------------------------------------> I want to know current offset. 
      autoSaveTime = reader.ReadInt32(); 
      showStatusBar = reader.ReadBoolean(); 
     } 

     Console.WriteLine("Aspect ratio set to: " + aspectRatio); 
     Console.WriteLine("Temp directory is: " + tempDirectory); 
     Console.WriteLine("Auto save time set to: " + autoSaveTime); 
     Console.WriteLine("Show status bar: " + showStatusBar); 
    } 
} 

Я должен выяснить, ток смещения BinaryReader.

+1

Обратите внимание, что вы делаете сильное предположение, что BinaryReader не буфер байтов из базы поток. Он выполняет буферизацию байтов. Но не таким образом, который будет бать вас. –

ответ

7

Вы можете получить основной поток по

var stream = reader.BaseStream; 

и получить позицию

stream.Position 
+0

Большое спасибо за ваш ответ. –

1
BinaryReader br=null; 
/* init, read, ...*/ 
long pos=br.BaseStream.Position; 
+0

Спасибо за ваш ответ. –

 Смежные вопросы

  • Нет связанных вопросов^_^