2

我正在尝试将输出写入存储在我的 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"

有谁知道,出了什么问题?

4

2 回答 2

2

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

可能只是您的“\n”在您正在阅读的地方不是一个完整的新行。在 Windows 中,我相信您需要一个 "\r\n" 来获得正确的换行符。

您可以阅读有关换行符 (\n) 和回车符 (\r) 之间的区别以及哪些系统在Wikipedia上使用哪个,但这阐明了 windows 使用回车符和换行符来表示新行。

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

于 2013-06-21T05:55:06.117 回答
0

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

 string copyTemp="";                                

 copyTemp += "hi" + Environment.NewLine;                
 copyTemp += "hello" + Environment.NewLine; 
于 2021-03-03T00:13:42.137 回答