我有一个非常简单的控制台应用程序,可以创建一个文本文件。以下是代码的概述:
StreamWriter writer = File.CreateText("c:\\temp.txt");
foreach (blah...)
{
writer.Write(body.ToString() + "\n");
writer.Flush();
}
writer.Close();
客户声称每行末尾都有回车。这些回车来自哪里?
更新:在VS二进制编辑器和Notepad ++中打开后,没有出现0d 0a
。我要回到客户端。
答案 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
是否也以您不想要打印的字符结尾?这是另一个潜在的问题来源。