2011-10-17 3 views
1

".bin"ファイルを完全に読み込み、ストリームを関数に渡す必要があります。私はBinaryReaderをバイトごとに値を読み取るためにうまくいきました。全ファイルを文字列ストリームとして関数に渡したいと思っています。 StreamReaderを使用するとガベージ情報が得られますが、StreamReaderは適切にビンファイルを読み取ることができません。C#でBinaryReaderをStreamに変換するにはどうすればよいですか?

ありがとうございます。

+0

あなたがしたいことを明確にしてください。ストリームオブジェクトを関数またはファイルの内容に渡しますか?後者の場合は、ファイルの内容をバイトの配列として渡すか、各バイトが16進値で表される文字列として渡しますか? –

+0

ファイルはおそらくUnicodeテキストではありません。あなたは読んでいるファイルを理解する必要があります。 – SLaks

+0

ストリームをバイナリではなく、文字列に渡す必要があります。ここでは、私はreadlineなどがあります。 – Vikyboss

答えて

0

バイナリデータをstringとして渡さないでください。代わりに、Streamから読まれた可能性のあるものから切り離されたbyte[]を使用してください。 StreamReaderはテキストを読むためのものなので、BinaryReaderまたはStream.Read() methodを直接使用する必要があります。読み込み中のストリームがシークできる場合(CanSeekプロパティを介して公開されている場合)、そのLengthが見つかり、ストリームからすべてのバイトを一度に読み取ることができます。

ストリームが非常に大きいか、シークをサポートしていない場合、メソッドが0を返すまで、チャンクでそれを行うと、少し精巧にする必要があります。達成された)。

バイナリデータを読み取るのに相当するStreamReader.ReadToEnd()はありませんが、拡張メソッドとして定義することはあまり難しくありません。

関連する問題