2011-07-13 113 views
1

是否可以從特定位置讀取大型二進制文件?從特定位置讀取C#中的二進制文件

我不想從頭開始讀取文件,因爲我可以計算出我需要的流的開始位置和長度。

+0

所有你需要做的就是改變'Position'屬性,或使用'Seek'方法。你擔心整個文件被加載到內存中嗎? – Marlon

+0

是的,我不想將整個文件加載到內存中。我使用BinaryReader並找不到Seek方法。 - > BinaryReader.BaseStream.Seek(),這就是解決方案。 ;-) – Skuami

+0

你不必擔心一個巨大的文件被加載到內存中。流只會一次加載其中的一部分。否則,我們永遠無法打開大文件。 – Marlon

回答

1

是閱讀,你可以使用尋求像上面。一個樣本→C# Seek File Examples

+0

謝謝斯科特,這就是我一直在尋找的東西。我使用BinaryReader但無法找到Seek方法。 謝謝...... ;-) – Skuami

1

那麼如果你知道流,爲什麼不使用(文件)Stream.Seek(...)?

+1

我使用BinaryStream,但我找不到Seek()方法。 Scott的鏈接解釋瞭如何在二進制閱讀器上獲取查找方法。 BinaryReader.BaseStream.Seek(pos,SeekOrigin.Begin); – Skuami

1

當然是possible.See這個here。看到offset.you可以從偏移

+1

不是,偏移量定義緩衝區的偏移量,而不是文件的起始點。在我寫這篇文章之前,我嘗試了這種方式。 – Skuami

7
 using (FileStream sr = File.OpenRead("someFile.dat")) 
     { 
      sr.Seek(100, SeekOrigin.Begin); 
      int read = sr.ReadByte(); 
      //... 
     }