Shuttle.Streams
Shuttle.Streams provides essential Stream extension methods to simplify common operations like copying and byte array conversion.
Installation
bash
dotnet add package Shuttle.StreamsStream Extensions
csharp
Task<byte[]> ToBytesAsync()Creates an array of bytes from the given stream. The source stream's position is preserved throughout the operation (it is restored to its original state once the operation completes).
csharp
Task<Stream> CopyAsync()Returns a copy of the given stream as a MemoryStream.
Optimizations:
If the source stream is a MemoryStream and its internal buffer is accessible, CopyAsync will return a read-only MemoryStream over the same buffer (a zero-copy operation). Otherwise, a standard MemoryStream is used and the source data is copied.
Positioning:
- The returned copy will be positioned at
0. - The source stream's position is preserved (restored to its original state).
Usage
csharp
using Shuttle.Streams;
// ... inside an async method ...
// Convert a stream to a byte array
byte[] data = await myStream.ToBytesAsync();
// Create an efficient copy of a stream
using (Stream copy = await myStream.CopyAsync())
{
// work with the copy, myStream position remains unchanged
}