[英]StreamWriter is writing carriage returns?
我有一個非常簡單的控制台應用程序,可以創建一個文本文件。 以下是代碼的概述:
StreamWriter writer = File.CreateText("c:\\temp.txt");
foreach (blah...)
{
writer.Write(body.ToString() + "\n");
writer.Flush();
}
writer.Close();
客戶聲稱每行末尾都有回車符。 這些回車從哪里來?
更新:在VS二進制編輯器和Notepad ++中打開后,沒有出現0d 0a
。 我要回去給客戶。
在Visual Studio二進制編輯器中打開文件(File.Open.File,在“打開”按鈕上單擊向下箭頭,選擇“打開方式...”,然后選擇“二進制編輯器”),然后查找0D
字節。 如果不存在,則:
您的客戶無法分辨換行和回車之間的區別,
您的傳輸方式是在途中修改文件。 FTP二進制/ ASCII不匹配持續嗎?
如果有 0D
字節,那么他們出現在你的body
變化。
我測試了您的代碼。
替代文字http://img830.imageshack.us/img830/5443/18414385.png
您發布的代碼沒有換行符( 0D
),只有換行符( 0A
)。 其他原因正在創建回車,或者客戶不知道什么是回車。
每個write
調用結束時的"\\n"
編輯:我知道這是一個新行,而不是回車,但我敢打賭,這兩個客戶之間的客戶會感到困惑,這實際上是導致問題的原因
在您的代碼中放入換行符(\\ n)。
您的客戶正在談論回車(\\ r)。 也許您的客戶每次回車都要換行?
客戶是否區分CR和LF? 是否需要flush()? 如果不刷新,是否會使緩沖區超載?
除非您有大量的文本,否則您可能會發現創建StringBuilder來使用\\ n,\\ r,\\ t或其他內容來完全格式化所需的文本格式,然后將其直接泵送到StreamWriter中,將有更多用處。
如果每個body
字符串的第一個字符為'\\ r',它將解釋您所看到的內容。
您是否檢查過body
是否也以您不想打印的字符結尾? 這是另一個潛在的問題來源。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.