Class StreamCopyOptions
Configuration options that is related to Stream copy operations.
public class StreamCopyOptions : DisposableOptions, IParameterObject
- Inheritance
-
StreamCopyOptions
- Implements
- Derived
- Inherited Members
Examples
StreamCopyOptions configures buffer size and whether the source stream remains open after synchronous copy operations. This example creates custom options with BufferSize = 4096 and LeaveOpen = true, converts a MemoryStream to a byte array via the decorator pattern with these options, then confirms the source stream is still readable (CanRead = True). It also demonstrates the default behavior where LeaveOpen = false disposes the source stream after copying, showing CanRead = False. Console output displays the byte count (26), the decoded string ("Hello, StreamCopyOptions!"), and the stream's open/disposed state.
using System;
using System.IO;
using System.Text;
using Cuemon;
using Cuemon.IO;
namespace MyApp.IO;
public class StreamCopyOptionsExample
{
public void Demonstrate()
{
// Create and use StreamCopyOptions directly
var customOptions = new StreamCopyOptions { BufferSize = 4096, LeaveOpen = true };
Console.WriteLine($"Buffer size: {customOptions.BufferSize}, Leave open: {customOptions.LeaveOpen}");
// Create a memory stream with some data
var source = new MemoryStream(Encoding.UTF8.GetBytes("Hello, StreamCopyOptions!"));
// Convert the stream to a byte array using custom StreamCopyOptions
byte[] bytes = Decorator.Enclose(source).ToByteArray(setup =>
{
setup.BufferSize = 4096;
setup.LeaveOpen = true;
});
Console.WriteLine($"Read {bytes.Length} bytes"); // 26
Console.WriteLine(Encoding.UTF8.GetString(bytes)); // Hello, StreamCopyOptions!
Console.WriteLine($"Source stream is still open: {source.CanRead}"); // True
// Without LeaveOpen, the source stream is automatically disposed after reading
var temp = new MemoryStream(Encoding.UTF8.GetBytes("Temporary data."));
byte[] tempBytes = Decorator.Enclose(temp).ToByteArray(); // disposes 'temp'
Console.WriteLine(Encoding.UTF8.GetString(tempBytes)); // Temporary data.
Console.WriteLine($"Stream was disposed: {!temp.CanRead}"); // True
// Using default options (BufferSize = 81920, LeaveOpen = false)
var data = new MemoryStream(Encoding.UTF8.GetBytes("Default options."));
byte[] result = Decorator.Enclose(data).ToByteArray();
Console.WriteLine(Encoding.UTF8.GetString(result)); // Default options.
}
}
Constructors
StreamCopyOptions()
Initializes a new instance of the StreamCopyOptions class.
public StreamCopyOptions()
Remarks
The following table shows the initial property values for an instance of StreamCopyOptions.
| Property | Initial Value |
|---|---|
| BufferSize | 81920 |
Properties
BufferSize
Gets or sets the size of the buffer.
public int BufferSize { get; set; }
Property Value
- int
The size of the buffer.
Exceptions
- ArgumentOutOfRangeException
valueis lower than or equal to 0.