我正在尝试将输出写入存储在我的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"
有没有人有想法,出了什么问题?
答案 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;