2013-03-22 133 views
3

我在一個字符串變量中有一個巨大的HTML內容,我想使用流寫入器將該內容寫入文本文件,但流寫入器正在截斷文本。它不是要提交整個內容。我正在使用以下代碼: -StreamWriter在寫入文本文件時截斷文本

using (StreamWriter sw = new StreamWriter(completeFilePath)) 
{ 
    sw.Write(Html); 
} 

其中Html是字符串類型變量。請幫忙。

+2

什麼是'Html'? – 2013-03-22 07:30:38

+1

哪裏是你分配給'html'的代碼?它是否總是截斷到相同的最大長度? – jordanhill123 2013-03-22 07:32:28

+0

您是否在使用說明結束前檢查?因爲using語句隱式調用Dispose(),當它落在範圍之外時,會自動調用Flush()。 – 2017-03-02 22:02:13

回答

0

假設Html是一個包含HTML的字符串變量,請嘗試在sw.Write()之後調用sw.Flush()。這應該強制流寫入器將字符串的其餘部分寫入文件。如果文件仍被截斷,請確保Html包含完整的HTML。

+2

Dispose中的流是否不沖洗? – 2013-03-22 07:34:13

+0

@lazyberezovsky它應該但是這將在沒有任何其他代碼的情況下明確排除問題的流,例如創建Html。 – akton 2013-03-22 07:36:28

+0

好,同意。等待OP – 2013-03-22 07:38:04

6

寫入後,使用Flush方法清除緩衝區。

sw.Write(Html); 
sw.Flush(); 
+1

的Html創建代碼,這解決了我的問題。我試圖完成類似的任務。在某些情況下,正在寫入的html被截斷,其他情況下根本沒有寫入任何內容。讓我想知道'Flush()'實際上在解決這個問題。 – 2015-01-26 01:19:18

+0

@Adeel這是我的問題,緩衝區大約2或4kb,因此它實際上可以將整個文本文件保存在內存中,永遠不會寫出來。我正在拔出頭髮,試圖弄清楚琴絃的區別。 – Caperneoignis 2016-05-05 15:00:36

0

如果尺寸過大,

using (StreamWriter sw = new StreamWriter(completeFilePath)) 
{ 
    sw.Write(Html); 
    //just to make sure the stream writer flushes the command 
    sw.Flush(); 
} 

如果規模沒有那麼大,我建議使用File.WriteAllText方法

//no need to Open or Close anything 
File.WriteAllText(Path, Html);