簡體   English   中英

StreamWriter正在寫回車符嗎?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM