簡體   English   中英

FileStream.copyTo(Net.ConnectStream)實習生會發生什么?

[英]FileStream.copyTo(Net.ConnectStream) what happens intern?

此代碼可以正常工作。 我的問題是,當我使用CopyTo()方法時,Net.ConnectionStream中會發生什么?

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);
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM