关于C#如何写入文件,我将在下总结4种方法。
1.每一次输入都会覆盖原文本
用到 WriteAllText()
代码如下:
using System;
class Program
{
static void Main(string[] args)
{
char[] c = { '3', '5', '7' };
for (int i = 0; i < 3; i++) {
String s = c[i].ToString();
//将字符数组的内容写入文件111.txt中
System.IO.File.WriteAllText(@"C:\Users\地心\Desktop\111.txt", s);
}
Console.WriteLine("写入成功");
}
}
查看写入文件内容如下:
如果文件不覆盖,那文件111.txt中的内容会是:357 ,而此时文本内容只有7,说明每一次文本输入都会覆盖原文件。所以用WriteAllText()会覆盖原文件。
2.每一次写入不会覆盖原文件,而是以追加的方式添加在文本末尾
用到 AppendAllText()
代码如下:
using System;
class Program
{
static void Main(string[] args)
{
char[] c = { '3', '5', '7' };
for (int i = 0; i < 3; i++) {
String s = c[i].ToString();
//将字符数组的内容写入文件111.txt中
System.IO.File.AppendAllText(@"C:\Users\地心\Desktop\111.txt", s);
}
Console.WriteLine("写入成功");
}
}
此时文件111.txt内容如下:
看到此时文本中357都已写入,但是可以发现,输入的内容不换行,而是直接追加在上一次写入内容之后,下面一种方法是使每次写入内容都换行。
3.每一次写入不会覆盖原文本,而是以换行添加的方式写入文本末尾
与第二点相同,还是用到了 AppendAllText()
代码如下:
using System;
class Program
{
static void Main(string[] args)
{
char[] c = { '3', '5', '7' };
for (int i = 0; i < 3; i++) {
String s = c[i].ToString() + "\r\n";
//将字符数组的内容写入文件111.txt中
System.IO.File.AppendAllText(@"C:\Users\地心\Desktop\111.txt", s);
}
Console.WriteLine("写入成功");
}
}
此时写入文本的内容为:
在每次要写入的内容中进行修改,即在写入的字符串s后添加了"\r\n"的换行符。
注意,以上的方法只有在写入的内容是字符串时才可执行。
4.文件流写入文本,会覆盖原文本
代码如下:
using System;
using System.IO;
class Program
{
static void Main(string[] args)
{
char[] c = { '3', '5', '7', '9' };
//创建文件流file1
FileStream file1 = new FileStream(@"C:\Users\地心\Desktop\111.txt",
FileMode.OpenOrCreate, FileAccess.Write);
//根据文件流file1创建写数据流wf
StreamWriter wf = new StreamWriter(file1);
for (int i = 0; i < 4; i++) {
String s = c[i].ToString(); //要写入内容
wf.WriteLine(s); //用WriteLine()写入,并会自动换行
//wf.Write(s); //此句不换行
}
wf.Flush(); //清空缓冲区
wf.Close(); //关闭写数据流
file1.Close(); //关闭文件流
Console.WriteLine("写入成功");
}
}
文本文档此时内容为:
若要文本不换行只需要将
wf.WriteLine(s);
改为以下的代码即可
wf.Write(s);
除了以上4种情况之外还存在其他的方法,请大家自行探索,不足之处望指正。