来讲解一下C#的Stream.CopyTo方法吧。
方法介绍
Stream.CopyTo
方法是Stream类提供的一个实例方法,用于将当前流中的所有数据复制到另一个流中。该方法的具体定义为:
public void CopyTo(Stream destination);
其中,destination
为目标流对象,用于接收当前流中的数据。该方法将从当前流的当前位置开始复制数据,并将复制后的位置设置为当前流的末尾。复制的过程会一直持续到当前流的末尾,直到复制所有数据为止。
方法使用攻略
步骤1:构造源流对象
首先,我们需要构造源流对象,可以使用FileStream
、MemoryStream
、NetworkStream
等类型的流。
// 创建一个文件流对象
using var sourceStream = new FileStream("source.txt", FileMode.Open);
步骤2:构造目标流对象
其次,我们需要构造目标流对象,可以使用FileStream
、MemoryStream
、NetworkStream
等类型的流。
// 创建一个文件流对象
using var destinationStream = new FileStream("destination.txt", FileMode.Create);
步骤3:调用CopyTo方法
最后,我们直接调用CopyTo
方法即可将数据从源流复制到目标流中。
// 将源流中的所有数据复制到目标流中
sourceStream.CopyTo(destinationStream);
示例1:文件复制
以下示例演示从一个文件复制数据到另一个文件中。
using System;
using System.IO;
class Program
{
static void Main(string[] args)
{
// 创建一个文件流对象
using var sourceStream = new FileStream("source.txt", FileMode.Open);
// 创建一个文件流对象
using var destinationStream = new FileStream("destination.txt", FileMode.Create);
// 将源流中的所有数据复制到目标流中
sourceStream.CopyTo(destinationStream);
}
}
示例2:内存流
以下示例演示从一个内存流复制数据到另一个内存流中。
using System;
using System.IO;
class Program
{
static void Main(string[] args)
{
// 创建一个字节数组作为内存流的缓冲区
var buffer = new byte[] { 0x01, 0x02, 0x03, 0x04, 0x05 };
// 创建一个内存流对象
using var sourceStream = new MemoryStream(buffer);
// 创建一个内存流对象
using var destinationStream = new MemoryStream();
// 将源流中的所有数据复制到目标流中
sourceStream.CopyTo(destinationStream);
// 输出目标流中的数据
foreach (var b in destinationStream.ToArray())
{
Console.Write($"{b:x2} ");
}
Console.WriteLine();
}
}
以上两个示例演示了CopyTo
方法在文件复制和内存流复制中的使用方法。可以根据场景使用不同类型的流,并且数据的复制可以是单向也可以是双向的。