若是你要写入的内容不是不少,
能够使用File.WriteAllText方法来一次将内容所有写如文件。
若是你要将一个字符串的内容写入文件,能够用File.WriteAllText(FilePath) 或指定编码方式 File.WriteAllText(FilePath, Encoding)方法。
string str1 = "Good Morning!";
File.WriteAllText(@"c:\temp\test\ascii.txt", str1);
// 也能够指定编码方式
File.WriteAllText(@"c:\temp\test\ascii-2.txt", str1, Encoding.ASCII);
若是你有一个字符串数组,你要将每一个字符串元素都写入文件中,能够用File.WriteAllLines方法:
string[] strs = { "Good Morning!", "Good Afternoon!" };
File.WriteAllLines(@"c:\temp\ascii.txt", strs);
// 也能够指定编码方式
File.WriteAllLines(@"c:\temp\ascii-2.txt", strs, Encoding.ASCII);
使用File.WriteAllText或File.WriteAllLines方法时,若是指定的文件路径不存在,会建立一个新文件;若是文件已经存在,则会覆盖原文件。
当要写入的内容比较多时,
一样也要使用流(Stream)的方式写入。.Net封装的类是StreamWriter。
初始化StreamWriter类一样有不少方式:
// 若是文件不存在,建立文件; 若是存在,覆盖文件
StreamWriter sw1 = new StreamWriter(@"c:\temp\utf-8.txt");
// 也能够指定编码方式
// true 是 append text, false 为覆盖原文件
StreamWriter sw2 = new StreamWriter(@"c:\temp\utf-8.txt", true, Encoding.UTF8);
// FileMode.CreateNew: 若是文件不存在,建立文件;若是文件已经存在,抛出异常
FileStream fs = new FileStream(@"C:\temp\utf-8.txt", FileMode.CreateNew, FileAccess.Write, FileShare.Read);
// UTF-8 为默认编码
StreamWriter sw3 = new StreamWriter(fs);
StreamWriter sw4 = new StreamWriter(fs, Encoding.UTF8);
// 若是文件不存在,建立文件; 若是存在,覆盖文件
FileInfo myFile = new FileInfo(@"C:\temp\utf-8.txt");
StreamWriter sw5 = myFile.CreateText();
初始化完成后,能够用StreamWriter对象一次写入一行,一个字符,一个字符数组,甚至一个字符数组的一部分。
// 写一个字符
sw.Write('a');
// 写一个字符数组
char[] charArray = new char[100];
// initialize these characters
sw.Write(charArray);
// 写一个字符数组的一部分
sw.Write(charArray, 10, 15);
一样,StreamWriter对象使用完后,不要忘记关闭。
sw.Close();
最后来看一个完整的使用StreamWriter一次写入一行的例子:
FileInfo myFile = new FileInfo(@"C:\temp\utf-8.txt");
StreamWriter sw = myFile.CreateText();
string[] strs = { "早上好", "下午好" };
foreach (var s in strs)
{
sw.WriteLine(s);
}
sw.Close();