StreamWriter类小记
StreamWriter类
实现一个TextWriter,使其以一种特定编码向流中写入字符
原型:
[SerializableAttribute]
[ComVisibleAttribute(true)]
public class StreamWriter : TextWriter
默认使用UTF8Encoding的实例,不是线程安全的
看一下构造函数原型:
StreamWriter(Stream) 用其所长UTF-8编码及缓冲区大小,为指定的流初始化StreamWriter类的一个新实例.
StreamWriter(String) 使用默认编码和缓冲区大小,为指定路径上的指定文件初始化StreamWriter类的新实例.
StreamWriter(Stream,Encoding) 使用指定的编码及默认缓冲区大小,为指定的流初始化类的新实例
StreamWriter(String,Boolean) 使用默认编码和缓冲区大小,为指定路径上的指定文件初始化 StreamWriter 类的新实例。如果该文件存在,则可以将其覆盖或向其追加。如果该文件不存在,则此构造函数将创建一个新文件。
StreamWriter(Stream,Encoding,Int32) 用指定的编码及缓冲区大小,为指定的流初始化 StreamWriter 类的新实例。
StreamWriter(String,Boolean,Encoding) 使用指定编码和默认缓冲区大小,为指定路径上的指定文件初始化 StreamWriter 类的新实例。如果该文件存在,则可以将其覆盖或向其追加。如果该文件不存在,则此构造函数将创建一个新文件。
StreamWriter(String,Boolean,Encoding,Int32) 使用指定编码和缓冲区大小,为指定路径上的指定文件初始化 StreamWriter 类的新实例。如果该文件存在,则可以将其覆盖或向其追加。如果该文件不存在,则此构造函数将创建一个新文件。
例子:
public void CreateTextFile(string fileName,string textToAdd)
{
string logFile = DateTime.Now.ToShortDateString().Replace(@"/",@"-").Replace(@"\",@"-") +".log";
FileStream fs = new FileStream(fileName,FileMode.CreateNew,FileAccess.Write,FileShare.None);
StreamWriter swFromFile = new StreamWriter(logFile);
swFromFile.Write(textToAdd);
swFromFile.Flush();
swFromFile.Close();
StreamWriter swFromFileStream = new StreamWriter(fs);
swFromFileStream.Write(textToAdd);
swFromFileStream.Flush();
swFromFileStream.Close();
StreamWriter swFromFileStreamDefaultEnc =
new System.IO.StreamWriter(fs,
System.Text.Encoding.Default);
swFromFileStreamDefaultEnc.Write(textToAdd);
swFromFileStreamDefaultEnc.Flush();
swFromFileStreamDefaultEnc.Close();
StreamWriter swFromFileTrue =
new StreamWriter(fileName,true);
swFromFileTrue.Write(textToAdd);
swFromFileTrue.Flush();
swFromFileTrue.Close();
StreamWriter swFromFileTrueUTF8Buffer =
new StreamWriter(fileName,
true, System.Text.Encoding.UTF8,512);
swFromFileTrueUTF8Buffer.Write(textToAdd);
swFromFileTrueUTF8Buffer.Flush();
swFromFileTrueUTF8Buffer.Close();
StreamWriter swFromFileTrueUTF8 =
new StreamWriter(fileName, true,
System.Text.Encoding.UTF8);
swFromFileTrueUTF8.Write(textToAdd);
swFromFileTrueUTF8.Flush();
swFromFileTrueUTF8.Close();
StreamWriter swFromFileStreamUTF8Buffer =
new StreamWriter(fs, System.Text.Encoding.UTF8, 512);
swFromFileStreamUTF8Buffer.Write(textToAdd);
swFromFileStreamUTF8Buffer.Flush();
swFromFileStreamUTF8Buffer.Close();
}
字段:
CoreNewLine:存储用于此TextWriter的换行符
protected char[] CoreNewLine
Null:不带任何可写入但无法从中读取的后备存储区
public static readonly StreamWriter Null
if(sw.Equals(StreamWriter.Null))
{
sw.WriteLine("The store can be written to, but no read from");
}
常用方法:
Write() ,WriteLine()