2011-10-17 33 views
1

我必須完全讀取「.bin」文件,並將流傳遞給函數。我試着用BinaryReader,它能夠逐字節地讀取值,我想將整個文件作爲字符串流傳遞給我的函數。 StreamReader的用法提供了垃圾信息,它看起來像StreamReader無法正確讀取bin文件。如何將C#中的BinaryReader轉換爲Stream?

在此先感謝。

+0

請說明你想要做什麼。你想傳遞流對象到你的函數或文件的內容?如果是後者,是否要將文件內容作爲字節數組傳遞,或者將每個字節表示爲十六進制值的字符串傳遞給字符串? –

+0

您的文件可能不是Unicode文本。你需要了解你正在閱讀的文件。 – SLaks

+0

我需要傳遞一個不是二進制的流,而是一個字符串,在那裏我可以readlines等。 – Vikyboss

回答

0

不要將二進制數據作爲string傳遞。相反,使用byte[]這是從任何Stream分離,你可能已經讀過它。 StreamReader用於讀取文本是正確的,因此您需要直接使用BinaryReader或僅使用Stream.Read() method。如果您正在閱讀的數據流允許查找(通過CanSeek屬性公開),則可以發現其Length,並一次讀取數據流中的所有字節。

但是,如果數據流非常大或者不支持查找,則需要在讀取數據塊時進行更詳細的說明,直到Read()方法返回0(這意味着數據流的末尾有已達到)。

沒有StreamReader.ReadToEnd()相當於讀取二進制數據,但定義一個作爲擴展方法不是很難。