组合流
# 组合流
组合流允许将多个不同的流组合成一个流,这两个流可以分别为流式传输和非流式传输。
# 构建组合流
var combineStream = new CombineStream()
1
# 函数原型
CombineStream(Stream left, Stream right, bool closed = false);
1
参数 | 描述 |
---|---|
left | 左侧的流 |
right | 右侧的流 |
closed | 是否在流读取完成后自动关闭流 |
CombineStream(Stream[] source, bool closed = false);
1
参数 | 描述 |
---|---|
source | 多个流的数组,按照数组顺序排列 |
closed | 是否在流读取完成后自动关闭流 |
# Length
获取组合流的总长度,如果组合流中的任意一个流不能被获取长度,那么将会引发一个NotSupportedException
。
var length = combineStream.Length;
1
# 函数原型
long Length { get; }
1
# CanSeek
判断组合流是否能够偏移,如果组合流中的任意一个流不能够偏移,那么返回false
。
var canSeek = combineStream.CanSeek;
1
# 函数原型
bool CanSeek { get; }
1
# Position
获取组合流全局的偏移量
var position = combineStream.Position;
1
# 函数原型
long Position { get; }
1
# CanRead
判断管道流是否可以被读取,如果组合流中的任意一个流不能够读取,那么返回false
。
var readable = combineStream.CanRead;
1
# 函数原型
bool CanRead { get; }
1
# CanWrite
判断管道流是否可以被写入。管道流永远返回false
。
var writeable = combineStream.CanWrite;
1
# 函数原型
bool CanWrite { get; }
1
# Seek
偏移游标到指定位置。
combineStream.Seek(0, SeekOrigin.Begin);
1
# 函数原型
long Seek(long offset, SeekOrigin origin);
1
参数 | 描述 |
---|---|
offset | 指定的偏移位置 |
origin | 偏移方向 |
# Read
读取组合流中的数据,返回值为实际读取的长度。
var read = combineStream.Read(buffer, 0, buffer.Length);
1
# 函数原型
int Read(byte[] buffer, int offset, int count)
1
参数 | 描述 |
---|---|
buffer | 读取的缓冲区 |
offset | 读取缓冲区起始偏移量 |
count | 期望读取的长度 |
# Write
组合流不支持写入,会引发一个NotSupportedException
异常。
# SetLength
组合流不支持设定长度,会引发一个NotSupportedException
异常。
# Flush
组合流不支持Flush,会引发一个NotSupportedException
异常。
上次更新: 2023/10/17, 17:20:06 访问次数: 0