1

ストリームの一部を文字列に変換する関数があります。

private string GetString(Stream stream, int start, int length) 
{
    var buffer = new byte[length];
    stream.Read(buffer, start, length);
    return Encoding.UTF8.GetString(buffer, start, length);
}

私はかなり大きなストリームで作業していますが、を呼び出すことができるようにするためだけにバイトを複製するのは好きではありません(ストリームの一部をbyte []に​​変換することによって)Encoding.GetString。ストリームからエンコードの文字列を取得する方法はありますか?

4

1 に答える 1

2

あなたが何をしようとしているのかははっきりしていません - そして、Stream.Read戻り値を使わずに呼び出しているという事実は驚くべきことです - しかし、おそらくあなたが探しているのはStreamReader? にTextReader裏打ちされたStreamであるため、バイナリデータの代わりに文字を読み取ることができます。これは、完全にテキスト データであるストリームから読み取る場合に適しています (少なくとも現在の位置からコンストラクタに渡す場合。以前にバイナリ データを保持している可能性があります)。

本当にストリームの一部からデータを読み込もうとしているのなら、とにかくコードを変更する必要がStream.Readあります。ストリーム。またはを使用して、ストリーム内の適切な位置に到達する必要があります。Stream.PositionStream.Seek()

于 2012-09-25T06:48:30.353 に答える