2016-02-12 40 views
2

我有以下代碼:如何選擇路徑與MemoryStream的

using (Stream responseStream = reply.GetResponseStream()) 
{ 
    //Do not close the stream, this creates an error when saving a JPEG file 
    MemoryStream memoryStream = new MemoryStream(); 

    byte[] buffer = new byte[4096]; 
    int bytesRead; 
    do 
    { 
     bytesRead = responseStream.Read(buffer, 0, buffer.Length); 
     memoryStream.Write(buffer, 0, bytesRead); 
    } while (bytesRead != 0); 
} 

當我用這個在一個控制檯應用程序,自動保存到bin文件夾中的文件。現在我在一個Web應用程序中使用它 - 它根本沒有保存。 我怎樣才能給MemoryStream一個特定的路徑,所以它會保存在那裏,例如:"c:\\file.jpg"

+0

看看'FileStream':https://msdn.microsoft.com/en-us/library/system.io.filestream(v=vs.110).aspx –

+0

你提供的代碼wouldn'沒有在控制檯應用程序中保存任何內容到磁盤。目前還不清楚你想做什麼 - 如果你正在寫一個* response *流,你只是寫信給HTTP響應......這與寫入文件有什麼關係?請澄清這個問題。 –

+0

MemoryStream沒有路徑,因爲它僅在內存中。我也沒有看到您在發佈的代碼中保存任何內容到磁盤。 – Dirk

回答

2

我假設replyHttpWebResponse的一個實例(通過HttpWebRequest)。

無論如何,.NET 4自帶Stream.CopyTo,它簡化了從一個流複製到另一個流的過程,而無需您自己用自己的緩衝區手動執行。

像這樣:

using(Stream responseStream = reply.GetResponseStream()) 
using(Stream fileStream = new FileStream(@"C:\whatever\foo.bin", FileMode.CreateNew)) { 
    responseStream.CopyTo(fileStream); 
} 

就是這樣。