我正在编写一些测试应用程序,以使用以下命令将一些文本写入文本文件StreamWriter
。在执行时WriteLine
方法系统突然关闭。重新启动机器后,我发现文件末尾有很多 NUL 字符。
我查了很多网站,包括MSDN,都没有找到解决这个问题的方法。
任何人都可以帮我解决这个问题吗?
如果我们执行以下步骤,可以轻松重现这一点:
-
创建 Windows 应用程序并在其上放置一个按钮控件。
-
在按钮单击事件处理程序中编写以下代码:
私人无效button1_Click(对象发送者,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 的关机按钮。
-
重新启动电脑并检查文件。它包含以下文本:
欢迎来到 C Sharp 编程世界,这里有一个使用 IO 操作的测试应用程序。
欢迎来到 C Sharp 编程世界,这里有一个使用 IO 操作的测试应用程序。
欢迎来到 C Sharp 编程世界,这里有一个使用 IO 操作的测试应用程序。
欢迎来到 C Sharp 编程世界,这里有一个使用 IO 操作的测试应用程序。
欢迎来到 C Sharp 编程世界,这里有一个使用 IO 操作的测试应用程序。
欢迎来到 C Sharp 编程世界,这里有一个使用 IO 操作的测试应用程序。
努努努努努努努努努努努努努努努努努努努努努努努努努努努努努努努努努努努努努努努努努努努努努努努努努努努努努努努努努努努努努努努努努努努努努努努努努努努努努努努努努
NUL字符会出现在Notepaad++中,而我们在普通记事本中看不到这些字符。
那个会发生。当您首先附加文件时,其大小会在目录中进行更正(这在 NTFS 中是事务性的),然后写入实际的新数据。如果您关闭系统,您很可能会得到一个附加有大量空字节的文件,因为与元数据(文件大小)写入不同,数据写入不是事务性的。
这个问题没有绝对的解决方案。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)