【发布时间】:2012-06-10 10:25:31
【问题描述】:
我正在编写一些测试应用程序以使用StreamWriter 将一些文本写入文本文件。在执行WriteLine 方法时,系统突然关闭。重启机器后,我发现文件末尾有很多 NUL 字符。
我搜索了许多网站,包括 MSDN,但没有找到解决此问题的方法。
谁能帮我解决这个问题?
如果我们执行以下步骤,这可以很容易地重现:
-
创建 WindowsApplication 并在其上放置一个按钮控件。
-
在按钮单击事件处理程序中编写以下代码:
private void button1_Click(object sender, EventArgs e)
{ string str = "Welcome to the C Sharp programming world with a test application using IO operations."; StreamWriter sw = new StreamWriter(fileName, true, Encoding.Unicode, str.Length); sw.WriteLine(str); sw.Close(); } -
运行应用程序并连续单击按钮(直到机器关闭才停止)并按下PC的Poweroff按钮。
-
重启电脑并检查文件。它包含以下文本:
通过使用 IO 操作的测试应用程序欢迎来到 C Sharp 编程世界。
通过使用 IO 操作的测试应用程序欢迎来到 C Sharp 编程世界。
通过使用 IO 操作的测试应用程序欢迎来到 C Sharp 编程世界。
通过使用 IO 操作的测试应用程序欢迎来到 C Sharp 编程世界。
通过使用 IO 操作的测试应用程序欢迎来到 C Sharp 编程世界。
欢迎使用使用 IO 操作的测试应用程序来到 C Sharp 编程世界。
NULNULNULNULNULNULNULNULNULNULNULNULNULNULNULNULNULNULNULNULNULNULNULNULNULNULNULNULNULNULNULNULNUL
NUL 字符会出现在 Notepaad++ 中,而我们在普通记事本中看不到这些字符。
【问题讨论】:
-
不确定会有多大帮助,但在收盘前执行 sw.Flush() 可能会有所帮助。不过UPS会更好。 :(
标签: c# streamwriter shutdown