Azure:Blob Write中的输出与预期不符

时间:2013-06-21 05:49:10

标签: azure azure-storage-blobs azure-worker-roles

我正在尝试将输出写入存储在我的azure容器中的文本文件。

以下是我的woker角色片段:

            string copyTemp="";                                

            copyTemp += "hi" + "\n";                
            copyTemp += "hello" + "\n";                

            if (String.IsNullOrEmpty(copyTemp))
                return;

            using (var memoryStream = new MemoryStream())
            {                
                memoryStream.Write(System.Text.Encoding.UTF8.GetBytes(copyTemp), 0, System.Text.Encoding.UTF8.GetBytes(copyTemp).Length);
                memoryStream.Position = 0;
                blockBlob.UploadFromStream(memoryStream); 
            }     

现在,当我下载并检查我的blob时,输出没有换行。

"hihello"

有没有人有想法,出了什么问题?

2 个答案:

答案 0 :(得分:1)

您是否尝试过使用Environment.NewLine而不是在字符串中添加“\ n”?

可能只是您的“\ n”不是您正在阅读它的地方的全新行。在Windows中我相信你需要一个“\ r \ n”来获得一个合适的新行字符。

您可以阅读新行(\ n)和回车符(\ r \ n)之间的差异以及哪些系统在Wikipedia上使用哪些系统但是这澄清了Windows使用回车符和换行符来表示一条新线。

因此,如果您在Mac或Linux上下载了blob,它可能会按预期显示。

答案 1 :(得分:0)

C# 的最佳解决方案是使用静态字符串属性 Environment.NewLine。您可以使用它来将文本内容写入文件、天蓝色 blob、控制台输出,而且您永远不必考虑它是 \n 还是 \r\n .在您的情况下,代码将是:

 string copyTemp="";                                

 copyTemp += "hi" + Environment.NewLine;                
 copyTemp += "hello" + Environment.NewLine;