簡體   English   中英

我如何獲得任務流的長度(文件大小)

[英]How can i get length (file size) of a task stream

我的主要要求是獲取任務流 System.Threading.Tasks.Task<System.IO.Stream> 長度(文件大小) 在內存流中,我曾經使用“ stream.Result.Length”來獲取文件大小,但是當我嘗試在任務流中使用文件大小時,它拋出了一個異常,提示System.NotSupportedException ,似乎該流不支持該屬性。 我認為內存流和其他流之間有區別。

處理通知時發生異常:System.NotSupportedException:此流不支持查找操作。

您能否給我任何指示,我如何實現此目的?我發現此鏈接為我提供了指示。 我正在使用.Net 3.5,因此無法使用.Net 4中的ConvertTo()函數。

流的要點是,在開始處理流的第一部分之前,無需擁有所有可用數據。 MemoryStream是一個例外,因為它確實同時將流的所有內容存儲在內存中,因此它可以“支持查找操作”來告訴您諸如流有多大的信息。

如果您需要找不到的流的全部大小,則必須消耗整個流才能找到它。 如果流總是會比較小,則可以將其內容復制到MemoryStream中 如果要更大,可以將其內容復制到磁盤上的文件中。

您可能需要檢查為什么需要知道長度。 舉例來說,如果您可以取消太大的上傳,則也許應該開始按塊處理上傳,但是在輸入完每條數據后,請檢查到目前為止已收到多少數據,然后取消如果太大,則進行處理。

暫無
暫無

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

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