流扩展


  流扩展的类名为 StreamExtension,是对 System.IO.Stream 的扩展。

1、分段读取

  Read 方法从流对象中分段读取字节数组,readAction 是每读到一段时返回的数据。

[TestMethod]
public void TestRead()
{
    using (var source = new FileStream("f:\gcd.rar", FileMode.Open))
    using (var dest = new FileStream("f:\gcd_1.rar", FileMode.Create))
    {
        source.Read((buffer, offset, count) =>
            {
                dest.Write(buffer, 0, count);
            });
    }
}

  可以指定 bufferSize 缓冲区的大小,默认为 20480。


2、写到其他流对象

  WriteTo 将流内容写到另一个流对象中,它实际是简化了上面例子中读和写的步骤。

[TestMethod]
public void TestWriteTo()
{
    using (var source = new FileStream("f:\gcd.rar", FileMode.Open))
    using (var dest = new FileStream("f:\gcd_1.rar", FileMode.Create))
    {
        source.WriteTo(desc);
    }
}

3、复制到内存流

  CopyToMemory 将流的内容复制到一个 MemoryStream 对象中。

[TestMethod]
public void TestCopyToMemory()
{
    using (var source = new FileStream("f:\gcd.rar", FileMode.Open))
    using (var memory = source.CopyToMemory())
    {
        Console.WriteLine(memory.Length);
    }
}