2012-11-27 19 views

答えて

5

offsetパラメータがどこ配列、arrayパラメータでデータの書き込みを開始するように指示します。ファイルデータ内のオフセットを指摘しません。

パラメータは読み出し開始するにアレイ(バッファインデックス)内のバイトのオフセット、及びカウントパラメータは、このストリームから読み出されるバイトの最大数を与える与えるオフセット。戻り値は実際に読み取られたバイト数です。ストリームの終わりに達した場合はゼロです。読み込み操作が成功した場合、ストリームの現在の位置は読み込まれたバイト数だけ進められます。例外が発生した場合、ストリームの現在の位置は変更されません。

出典:FileStream.Read

1

私はあなたが基本クラスStreamからオーバーライドされるthis方法を参照していると仮定しています。

オフセットは、FileStreamの先頭からのオフセットではないバイトを配置するために、array引数の場所です。 array引数のタイプはbyte[]で、int.MaxValue個以上の要素を持つことはできません。

6

オフセットは、データが配置されているバイト配列のインデックスです。 2 GBを超える配列を割り当てることはできません。そのため、オフセットの数を増やす必要はありません。

+0

これは、.NET 4.5の設定で許可されています。 http://msdn.microsoft.com/en-us/library/hh285054(v=vs.110).aspx – sisve

+0

非常に興味深い事実。どうも。 –

+0

http://msdn.microsoft.com/en-us/library/hh285054(v=vs.110).aspx –

1

なぜ、byte []をint.MaxValue以上にインデックスできないのですか?class Arrayは、object this[int index] { get; set; }メソッドでIListを実装しているため、indexは整数にしかなりません。

1

FileStream.Lengthはストリームのバイト数を取得し、FileStream.Readはストリームからバイトブロックを読み取ります。したがって、論理的には、そのバイトのブロックよりもシングルバイトが多くなります。私はこの理由FileStream.Length長いタイプが必要と仮定しています。