在Azure存储中读取和写入文本文件
下面的代码首先将一行文本保存到文本文件中,并显示在azure存储中,然后读取并打印在Azure存储中读取和写入文本文件,azure,azure-storage,Azure,Azure Storage,下面的代码首先将一行文本保存到文本文件中,并显示在azure存储中,然后读取并打印 string firstString = "this \t is \n a \t line \n are: "; using (var memoryStream = new MemoryStream()) { memoryStream.Write(System.Text.Encoding.UTF8.GetBy
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,但仍然没有打印任何内容。
我这里缺少什么,非常感谢您的帮助。替换以下代码行:
using (var memoryStream = new MemoryStream())
{
memoryStream.Write(System.Text.Encoding.UTF8.GetBytes(firstString), 0, System.Text.Encoding.UTF8.GetBytes(firstString).Length);
blockBlob.UploadFromStream(memoryStream);
}
与
发生的情况是,当您将字节数组写入
memoryStream
时,您没有将流的位置重置为0,因此正在上载一个0字节的blob。当您使用memoryStream
时,您首先写入内存,在从内存写入blob之后,最好直接写入blob,例如:
using (var blobStream = blockBlob.OpenWrite())
{
var data = System.Text.Encoding.UTF8.GetBytes(firstString);
blobStream.Write(data, 0, data.Length);
}
@Gaurav Mantri的解决方案是什么,当它是位图图像(而不是文本)@basharabushama时也是一样的解决方案。同样也应该可以。System.Text.Encoding.UTF8.GetBytes(MyBitMapImg)不起作用!啊。。。。我懂了。这将适用于基于文本的数据,而不是二进制数据。您需要使用位图图像上的函数来读取流。您可以将您的问题作为单独的问题发布。是的,我发布了,谢谢:
using (var blobStream = blockBlob.OpenWrite())
{
var data = System.Text.Encoding.UTF8.GetBytes(firstString);
blobStream.Write(data, 0, data.Length);
}