StreamWriter正在写回车?

时间:2010-07-19 16:35:02

标签: c#

我有一个非常简单的控制台应用程序,可以创建一个文本文件。以下是代码的概述:

StreamWriter writer = File.CreateText("c:\\temp.txt");
foreach (blah...)
{
  writer.Write(body.ToString() + "\n");
  writer.Flush();
}
writer.Close();

客户声称每行末尾都有回车。这些回车来自哪里?

更新:在VS二进制编辑器和Notepad ++中打开后,没有出现0d 0a。我要回到客户端。

7 个答案:

答案 0 :(得分:3)

在Visual Studio二进制编辑器中打开文件(File.Open.File,单击打开按钮上的向下箭头,选择打开方式...并选择二进制编辑器),然后查找0D个字节。如果没有,那么:

  • 您的客户无法判断换行和回车之间的区别,

  • 您的传输方法是在途中修改文件。是否有任何FTP二进制文件/ ascii不匹配?

如果 0D个字节,则它们会出现在您的body变量中。

答案 1 :(得分:3)

我测试了你的代码。

alt text http://img830.imageshack.us/img830/5443/18414385.png

您发布的代码没有任何回车(0D)只有新行(0A)。其他东西正在创建回车或客户端不知道回车到底是什么。

答案 2 :(得分:1)

每个"\n"电话结束时的write

编辑:我知道这是一个新行,而不是回车但是我敢打赌客户在两者之间感到困惑,实际上这就是造成问题

答案 3 :(得分:1)

在您的代码中添加换行符(\ n)。

您的客户正在谈论回车(\ r)。也许您的客户每次回程都会换行?

答案 4 :(得分:0)

客户端是否区分CR和LF? flush()是否必要?如果你没有冲洗,你是否在重载缓冲区?

除非你有大量的文本,你可能会发现创建一个StringBuilder更多地使用它来完全按照你想要的格式使用\ n,\ r,\ t或者其他任何东西,然后将它直接输入到StreamWriter中。

答案 5 :(得分:0)

如果每个body字符串的第一个字符是'\ r',它会解释您所看到的内容。

答案 6 :(得分:0)

您是否检查过body是否也以您不想要打印的字符结尾?这是另一个潜在的问题来源。