该类System.IO.StreamWriter
用于以特定编码将字符写入流。我认为最好使用类StreamWriter
将文本附加或写入特定文件并稍后控制编写器(类)。
结构
考虑使用以下示例创建StreamWriter
被调用_TextWriter
StreamWriter _TextWriter = new StreamWriter(Path)
另一个StreamWriter
调用_TextWriter2
使用以下示例创建
StreamWriter _TextWriter2 = new StreamWriter(Path, true);
如果你注意到了,我们的StreamWriter
被调用_TextWriter2
有两个参数:Path
和一个布尔值true
在这里使用true
只是告诉类它将用于将字符附加到该类可能创建或已经存在的文件中。否则,如果您将此留空或插入false
,则该文件将被覆盖。
这是一个例子
考虑有一个Path
包含两行内容的文件名
这是第一行
这是第二行
通过使用以下代码,您的文档 ( Path
)中将只有一行,即Hello
_TextWriter.WriteLine("Hello");
通过使用以下代码,您将在文档 ( ) 中有三行Path
代表以下内容:
这是第一行
这是第二行
你好
_TextWriter2.WriteLine("Hello");
Write()
现在让我们转到您的问题,和之间有什么区别WriteLine()
写()和写线()
答案很简单,如果您设置为布尔值,则使用该方法Write()
会将字符写入特定流的最后一个可用行,但如果您将布尔值留空或将其设置为,则会覆盖特定文件的内容。true
append
append
false
这是一个例子
考虑以下
- 你有一个文件名
D:\MyDocument.txt
- 该文件包含以下内容
这是我的第一行
这是我的第二行
您有以下代码:
StreamWriter _TextWriter = new StreamWriter(@"D:\MyDocument.txt");
_TextWriter.Write("Hello");
_TextWriter.Close(); //Save and Close the StreamWriter
你期望会发生什么?文件内容D:\MyDocument.txt
会变成如下
你好
这是因为您没有在上面的代码中指定是否要追加,并且因为 append 的默认值为false
,StreamWriter
不会追加到文件中,因此文件将被新内容覆盖。
另一个例子
考虑以下
- 你有一个文件名
D:\MyDocument.txt
- 该文件包含以下内容
这是我的第一行
这是我的第二行
您有以下代码:
StreamWriter _TextWriter = new StreamWriter(@"D:\MyDocument.txt", true);
_TextWriter.Write("Hello");
_TextWriter.Close(); //Save and Close the StreamWriter
你期望会发生什么?
文件内容D:\MyDocument.txt
会变成如下
这是我的第一行
这是我的第二行你好
该文件没有被单词覆盖,Hello
因为您已将布尔值设置append
为true
但您注意到了吗?文件的第二行已更改为
这是我的第一行
这是我的第二行你好
这意味着Hello
附加到可用的最后一行,这是因为您使用Write()
了它将文本附加到可用的最后一行。
概括
因此,如果您不希望这种情况发生,您可以使用WriteLine()
which 将首先在文件末尾创建一行。然后,使用您指定的字符附加或覆盖文件。