FileStream.copyTo(Net.ConnectStream)内部发生了什么



这段代码运行良好。我的问题是在网络里发生了什么。ConnectionStream当我使用CopyTo()方法?

System.Net.HttpWebRequest request 
using (FileStream fileStream = new FileStream("C:\myfile.txt")
{                        
    using (Stream str = request.GetRequestStream())
    {                   
         fileStream.CopyTo(str);
    }
}

更具体:数据发生了什么?
1. 写进内存然后上传?(大文件有什么用?)2. 直接写入网络?(这是怎么回事?)

感谢您的回答

创建一个byte[]缓冲区,在源端调用Read,在目标端调用Write,直到源端没有数据为止。

所以在处理大文件时,你不需要担心内存耗尽,因为你只会分配与缓冲区大小相同的内存,默认为81920字节。

下面是实际的实现-

public void CopyTo(Stream destination)
{
    // ... a bunch of argument validation stuff (omitted)
    this.InternalCopyTo(destination, 81920);
}
private void InternalCopyTo(Stream destination, int bufferSize)
{
    byte[] array = new byte[bufferSize];
    int count;
    while ((count = this.Read(array, 0, array.Length)) != 0)
    {
        destination.Write(array, 0, count);
    }
}

相关内容

  • 没有找到相关文章

最新更新