[英]Changing from MemoryStream to Stream in C#
下面是我傳遞 memory stream 並讀取它並在之后進行必要操作的代碼。 現在要求已經改變,而不是 Memory stream,我將通過 Stream 並開始給我錯誤。 如果此處返回的內容是 Stream 類型,我想知道如何處理以下方法。 現在,當我的內容是 MemoryStream 類型時,它可以正常工作。
public async Task<string> ReadStream(string containerName, string digestFileName, string fileName, string connectionString)
{
string data = string.Empty;
string fileExtension = Path.GetExtension(fileName);
var contents = await DownloadBlob(containerName, digestFileName, connectionString);
if (fileExtension == ".gz")
{
using (var unzipper = new GZipStream(contents, CompressionMode.Decompress))
{
using (StreamReader reader = new StreamReader(unzipper, Encoding.UTF8))
{
data = reader.ReadToEnd();
}
}
}
else
{
data = Encoding.UTF8.GetString(contents.ToArray());
}
return data;
}
我將假設問題是contents.ToArray()
,因為Stream
沒有ToArray()
方法。
在這種情況下,最好使用StreamReader
:
using (var reader = new StreamReader(contents))
{
data = reader.ReadToEnd();
}
StreamReader
默認使用Encoding.UTF8
,但您可以根據需要明確指定它: new StreamReader(contents, Encoding.UTF8)
。
您會注意到,您已經在上面的幾行中執行此操作,以從解壓縮器unzipper
中讀取。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.