1

以下是首先将一行文本保存到文本文件中,存在于 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,但仍然没有打印任何内容。我在这里缺少什么,感谢您的帮助。

4

2 回答 2

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。

于 2013-06-12T10:27:24.853 回答
0

使用MemoryStream时先写入内存,再从内存写入blob,最好直接写入blob,例如:

    using (var blobStream = blockBlob.OpenWrite())
    {
        var data = System.Text.Encoding.UTF8.GetBytes(firstString);
        blobStream.Write(data, 0, data.Length);
    }
于 2017-08-18T13:11:18.050 回答