[英]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.