使用StreamWriter在文件中写入Unicode字符串不起作用

ahm*_*iee 11 .net c# stream streamwriter

我有这个代码:

string s = "?";
StreamWriter writer = new StreamWriter("a.txt", false, Encoding.UTF8);
writer.WriteLine(s);
Run Code Online (Sandbox Code Playgroud)

但是当我运行它时,我在a.txt中看不到任何"آ"!! a.txt中没有任何字符串!它是空的!有什么问题!?!谁能帮我???

Ode*_*ded 31

你从来没有Close()StreamWriter.

如果你writer.Close()在完成写作时打电话,你会看到这个角色.

但是,因为它实现了IDisposable你应该StreamWriterusing声明中包装创建:

using(StreamWriter writer = new StreamWriter("a.txt", false, Encoding.UTF8))
{
   writer.WriteLine(s);
}
Run Code Online (Sandbox Code Playgroud)

这将为您关闭流.


Joh*_*mer 5

通过它的外观你不是Flush()荷兰国际集团和Close()荷兰国际集团在StreamWriter您结束应用程序之前.StreamWriter在内部使用一个缓冲区,需要在关闭应用程序之前刷新,或者StreamWriter超出范围,否则写入它的数据将不会写入光盘.

你可以Close()在完成后打电话- 虽然我会建议使用一个using声明,以确保你StreamWriter得到妥善处理.

string s = "?";

using (StreamWriter writer = new StreamWriter("a.txt", false, Encoding.UTF8))
{
    writer.WriteLine(s);
}
Run Code Online (Sandbox Code Playgroud)