Stream.CopyToを使用して、特定のバイト数だけを宛先ストリームにコピーする方法はありますか?何が最良の回避策ですか?Stream.CopyToを使用して特定のバイト数のみをコピーする方法はありますか?
編集:
私の回避策(いくつかのコードは省略):その後、
internal sealed class Substream : Stream
{
private readonly Stream stream;
private readonly long origin;
private readonly long length;
private long position;
public Substream(Stream stream, long length)
{
this.stream = stream;
this.origin = stream.Position;
this.position = stream.Position;
this.length = length;
}
public override int Read(byte[] buffer, int offset, int count)
{
var n = Math.Max(Math.Min(count, origin + length - position), 0);
int bytesRead = stream.Read(buffer, offset, (int) n);
position += bytesRead;
return bytesRead;
}
}
コピーするnバイト:
var substream = new Substream(stream, n);
substream.CopyTo(stm);
そのバイト数を読み取り、それを宛先ストリームに書き込みますか? – carlosfigueira