我必須在我的asp.net web應用程序中生成一些文件並將其發送給客戶端。 所以我做了一個方法,使用內存流並將緩衝區發送給http響應。上傳文件,MemoryStream vs FileInfo
它工作正常,但我只是讀了另一個代碼,這傢伙正在使用fileInfo。所以,如果我理解正確FileInfo是寫在服務器磁盤上的「真實」文件。
那麼最好的選擇是什麼? (如果有的話)我必須問我什麼問題?是關於文件的大小嗎?
請注意,我不關心存儲文件,一旦發送,我不必在服務器上。
我必須在我的asp.net web應用程序中生成一些文件並將其發送給客戶端。 所以我做了一個方法,使用內存流並將緩衝區發送給http響應。上傳文件,MemoryStream vs FileInfo
它工作正常,但我只是讀了另一個代碼,這傢伙正在使用fileInfo。所以,如果我理解正確FileInfo是寫在服務器磁盤上的「真實」文件。
那麼最好的選擇是什麼? (如果有的話)我必須問我什麼問題?是關於文件的大小嗎?
請注意,我不關心存儲文件,一旦發送,我不必在服務器上。
FileInfo
只是指向已存儲在文件系統上的文件的指針。如果你想訪問它的內容,你需要使用流。因此,如果您不想將文件保存在服務器上,則可以使用MemoryStream
並將其寫入響應。流也是指向某些數據的指針。 MemoryStream是一個指向存儲在內存中的數據的指針。所以你需要先將這些數據加載到內存中。
一個更好的方法是直接寫入塊的Response
對象。這樣你就不需要在內存中加載整個文件內容。但這取決於你如何生成文件。
爲什麼不使用FileUpload
類?如果你所需要的只是文件流,那麼你可以使用FileUpload.FileContent
屬性。但是在未來,如果你真的關心它,並且想保存它,那簡直就是FileUpload.SaveAs({path on server})
。
這樣您就可以使用相同的類/控件,而不管您現在或將來的實施需求如何。
有關MSDN的更多信息article。
FileInfo'幫助創建FileStream對象'所以.. MemoryStream vs FileStream – Reniuz 2011-12-29 13:47:57