组合流

组合流允许将多个不同的流组合成一个流,这两个流可以分别为流式传输和非流式传输。

构建组合流

var combineStream = new CombineStream()

函数原型
CombineStream(Stream left, Stream right, bool closed = false);
参数 描述
left 左侧的流
right 右侧的流
closed 是否在流读取完成后自动关闭流
CombineStream(Stream[] source, bool closed = false);
参数 描述
source 多个流的数组,按照数组顺序排列
closed 是否在流读取完成后自动关闭流

Length

获取组合流的总长度,如果组合流中的任意一个流不能被获取长度,那么将会引发一个NotSupportedException

var length = combineStream.Length;

函数原型
long Length { get; }

CanSeek

判断组合流是否能够偏移,如果组合流中的任意一个流不能够偏移,那么返回false

var canSeek = combineStream.CanSeek;

函数原型
bool CanSeek { get; }

Position

获取组合流全局的偏移量

var position = combineStream.Position;

函数原型
long Position { get; }

CanRead

判断管道流是否可以被读取,如果组合流中的任意一个流不能够读取,那么返回false

var readable = combineStream.CanRead;

函数原型
bool CanRead { get; }

CanWrite

判断管道流是否可以被写入。管道流永远返回false

var writeable = combineStream.CanWrite;

函数原型
bool CanWrite { get; }

Seek

偏移游标到指定位置。

combineStream.Seek(0, SeekOrigin.Begin);

函数原型
long Seek(long offset, SeekOrigin origin);
参数 描述
offset 指定的偏移位置
origin 偏移方向

Read

读取组合流中的数据,返回值为实际读取的长度。

var read = combineStream.Read(buffer, 0, buffer.Length);

函数原型
int Read(byte[] buffer, int offset, int count)
参数 描述
buffer 读取的缓冲区
offset 读取缓冲区起始偏移量
count 期望读取的长度

Write

组合流不支持写入,会引发一个NotSupportedException异常。

SetLength

组合流不支持设定长度,会引发一个NotSupportedException异常。

Flush

组合流不支持Flush,会引发一个NotSupportedException异常。

© 2017~ 随风逐叶 all right reserved,powered by Gitbook文章修订时间: 2021-07-15 09:41:42

results matching ""

    No results matching ""