2013-03-22 50 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);