我一直在嘗試在我的一個程序中實現壓縮方法。我希望它接受一個流,壓縮它並返回壓縮流(它返回一個流,因爲我希望能夠將該流傳遞給另一個函數,而不必將其保存到文件並在稍後重新讀取) 。我有基於MSDN的例子爲GZipStream工作測試版本,這就是我來到了,當我試圖將其轉換爲以中和返回流:壓縮流
public static Stream compress(Stream fileToCompress)
{
using (MemoryStream compressedFileStream = new MemoryStream())
{
using (GZipStream compressionStream = new GZipStream(compressedFileStream, CompressionMode.Compress))
{
fileToCompress.CopyTo(compressionStream);
return compressionStream;
}
}
}
返回的流保存到一個文件中(在另一種方法中)導致創建一個0字節的文件(相當有效的壓縮,呵呵?)。
我試過尋找othersolutions,但是我一直沒有找到任何使用流的東西,而且我試圖將運行轉換成相同的問題。
編輯:只是爲了記錄,我已經嘗試使用DeflateStream來獲得相同的結果。
EDIT2:原來是測試程序沒有正確保存。謝謝您的幫助。
請注意,您的示例實際上關閉了會導致相同的「讀取/寫入處置流」異常的基礎流。 –
我對'MemoryStream'和'GZipStream'的交互作用並不是100%確定的,所以我願意接受。我的編輯刪除使用。 –
感謝您的快速響應。我想我以前曾嘗試過,但沒有奏效。我再次嘗試,只是爲了確保,而且我仍然遇到問題。也@AlexeiLevenkov,它沒有拋出任何異常,它只是返回一個空的流。 – user3299958