KnowledgeHub
Questions
Tags
Users
Search
Alex Rivera
|
Logout
Edit Question
Title
Body
Is there any way to use Stream.CopyTo to copy only certain number of bytes to destination stream? what is the best workaround? Edit: My workaround (some code omitted): 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; } } then to copy n bytes: var substream = new Substream(stream, n); substream.CopyTo(stm);
Tags (comma-separated)
Save Edits
Cancel