问题描述
当用StreamWriter写入文件的时候,发现如果在写入的时候进行耗时的其他操作,写出的文件中会有很多行是空行,但是在console.writeln却是可以全部输出的,这是为什么啊?classProgram{staticvoidMain(){using(StreamWriterwriter=newStreamWriter("test.txt")){//这里进行一大批字符串拼接,比如拼接50次stringstr=str1+str2+st3+str4...+str50;writer.WriteLine(str);console.writeLn(str);}}}
解决方案
解决方案二:
用Write方法,别用WriteLine
解决方案三:
str被截断了吧,比如字符串里的‘’
解决方案四:
在不同地方处理不一样这可能算是个bug吧一般来说应该作为字符串结尾,之后的字符都应该抛弃不显示的但是.net在很多地方,作为空字符,后面的字符一样会显示而你输出到文件里,文件里会把作为结束符,而不是空字符
解决方案五:
非也,我发现当有的行数据等于超过12000长度的字符串时候,这一行都不会输出。大家可以试一下,str等于15000个"ABC",然后StreamWriter到文件,会显示空。是不是超过了string的最大限制?
解决方案六:
引用4楼mysam的回复:
非也,我发现当有的行数据等于超过12000长度的字符串时候,这一行都不会输出。大家可以试一下,str等于15000个"ABC",然后StreamWriter到文件,会显示空。是不是超过了string的最大限制?
我只能说,你很会玩为什么要把string定义成那么长??
解决方案七:
引用4楼mysam的回复:
非也,我发现当有的行数据等于超过12000长度的字符串时候,这一行都不会输出。大家可以试一下,str等于15000个"ABC",然后StreamWriter到文件,会显示空。是不是超过了string的最大限制?
试过了,没有问题。测试代码如下:stringtest=newstring('A',45000);using(StreamWritersw=newStreamWriter("aa.txt")){sw.WriteLine(test);}
解决方案八:
哎不好意思啊原来是editplus的问题同样的文件用ultareidt打开就是正常的,不好意思不好意思