在Azure存储中读取和写入文本文件

时间:2013-06-12 10:19:24

标签: 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.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,但仍然没有打印任何内容。 我在这里失踪了,感谢任何帮助。

2 个答案:

答案 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);
    }