以下是首先将文本行保存到文本文件中的代码,存储在azure存储中,然后读取并打印。
string firstString = "this \t is \n a \t line \n are: ";
using (var memoryStream = new MemoryStream())
{
memoryStream.Write(System.Text.Encoding.UTF8.GetBytes(firstString), 0, System.Text.Encoding.UTF8.GetBytes(firstString).Length);
blockBlob.UploadFromStream(memoryStream);
}
string text;
using (var memoryStream = new MemoryStream())
{
blockBlob.DownloadToStream(memoryStream);
text = System.Text.Encoding.UTF8.GetString(memoryStream.ToArray());
Trace.WriteLine(text);
}
问题是Trace.Writeline()语句中没有打印任何内容。
首先我想,它可能是一个编码问题,所以我将文本文件的格式从ASCII更改为UTF8,但仍然没有打印任何内容。 我在这里失踪了,感谢任何帮助。
答案 0 :(得分:2)
替换以下代码行:
using (var memoryStream = new MemoryStream())
{
memoryStream.Write(System.Text.Encoding.UTF8.GetBytes(firstString), 0, System.Text.Encoding.UTF8.GetBytes(firstString).Length);
blockBlob.UploadFromStream(memoryStream);
}
与
using (var memoryStream = new MemoryStream())
{
memoryStream.Write(System.Text.Encoding.UTF8.GetBytes(firstString), 0, System.Text.Encoding.UTF8.GetBytes(firstString).Length);
memoryStream.Position = 0;
blob.UploadFromStream(memoryStream);
}
当你将字节数组写入memoryStream
时,你没有将流的位置重置为0,因此正在上传一个0字节的blob。
答案 1 :(得分:0)
使用MemoryStream
时,首先写入内存,从内存写入blob后,最好直接写入blob,例如:
using (var blobStream = blockBlob.OpenWrite())
{
var data = System.Text.Encoding.UTF8.GetBytes(firstString);
blobStream.Write(data, 0, data.Length);
}