1. 程式人生 > >C#中流寫入類StreamWriter的介紹

C#中流寫入類StreamWriter的介紹

() virtual || 寫入 lock object 字符 html 更改

C#中流寫入類StreamWriter的介紹 (轉)

應用FileStream類需要許多額外的數據類型轉換工作,十分影響效率。使用StreamWriter類將提供更簡單,更方便的操作方式。
StreamWriter類允許直接將字符和字符串寫入文件,一般不針對二進制數據。
類的結構:
public class StreamWriter:TextWriter :實現一個TextWriter,使其以一種特定的編碼向流中寫入字符。 StreamWriter旨在以一種特定的編碼(默認使用UTF8Encoding)輸出字符。
構建器:
public StreamWriter (Stream stream):用UTF-8編碼及默認緩沖區大小,為指定的流初始化StreamWriter類的一個新實例。 參數stream(可用FileStream類實例代替)要寫入的流。 --可利用FileStream更好的控制對文件的操作方式。
public StreamWriter ( string path ):使用默認編碼和緩沖區大小,為指定路徑上的指定文件初始化 StreamWriter類的新實例。參數path要向其中寫入的完整文件路徑。path 可以是文件名。
public StreamWriter ( Stream stream, Encoding encoding ):用指定的編碼及默認緩沖區大小,為指定的流初始化StreamWriter類的新實例。參數encoding指定要使用的字符編碼。


public StreamWriter ( string path, bool append ):使用默認編碼和緩沖區大小,為指定路徑上的指定文件初始化StreamWriter類的新實例。如果該文件存在,則可以將其改寫或向其追加。如果該文件不存在,則此構造函數將創建一個新文件。參數 path 指定要寫入的完整文件路徑。 append指定確定是否將數據追加到文件。如果該文件存在,並且 append 為 false,則該文件被改寫。如果該文件存在,並且 append 為 true,則數據被追加到該文件中。否則,將創建新文件。
屬性
public virtual bool AutoFlush { get; set; }:獲取或設置一個值,該值指示 StreamWriter 是否在每次調用 StreamWriter.Write之後,將其緩沖區刷新到基礎流。 此屬性值強制 StreamWriter 刷新其緩沖區時,為 true;否則,為 false。
public virtual string NewLine { get; set; }:獲取或設置由當前 TextWriter 使用的行結束符字符串。 默認行結束符字符串是回車符後接一個換行符(“\r\n”)。
方法:
public override void Close ():關閉當前的 StreamWriter 對象和基礎流。
public override void Flush ():清理當前編寫器的所有緩沖區,並使所有緩沖數據寫入基礎流。 註意:在寫出數據後,必須使用此方法將緩沖中的數據寫出到流對應的目標中。
public override void Write(string value):將字符串寫入流,參數value 要寫入流的字符串。如果value為空,則不寫入任何內容。
public virtual void Write ( string format, params Object[] arg ):使用與 String.Format 相同的語義寫出格式化的字符串。參數format格式化字符串。 Arg指定要寫入格式化字符串的對象數組。
public virtual void WriteLine ():將行結束符寫入文本流。默認行結束符是後跟換行符的回車符(“\r\n”),但使用 NewLine 屬性可以更改此值。
public virtual void WriteLine ( string value ):將後跟行結束符的字符串寫入文本流。 參數value指定要寫入的字符串。如果 value 為 空引用(在 Visual Basic 中為 Nothing),則僅寫入行結束字符。
public virtual void WriteLine ( string format, params Object[] arg ):使用與 Format 相同的語義寫出格式化的字符串和一個新行。參數format 格式化字符串。 Arg指定要寫入格式化字符串的對象數組。
範例:
using System;
using System.IO;
using System.Text;
class TestRW
{
public static void Main(String[] args)
{
if (File.Exists(@"c:\MyFile.txt"))
{
using (FileStream fs = new FileStream(@"c:\MyFile.txt", FileMode.Append, FileAccess.Write))
{
fs.Lock(0, fs.Length);
StreamWriter sw = new StreamWriter(fs);
sw.WriteLine("我是最好的,雖然現在不是");
sw.WriteLine("有信息,不一定會贏,但沒有信心,肯定會輸");
sw.WriteLine("我的期待月薪為{0,9:C4},實現年齡為{1,9},成功率{2,9:P2}", new Object[] { 20000, 30, 1 });
fs.Unlock(0, fs.Length);//一定要用在Flush()方法以前,否則拋出異常。
sw.Flush();
}
}
else
{
Console.WriteLine("文件不存在");
}
}
}

string html = "@[email protected][email protected]"; string[] list = html.ToLower().Split(‘|‘); string result = ""; for (int i = 0; i < list.Length; i++) { if (list.Trim().Contains("@") || list.Trim().Contains("其他")) { }
else { result += list.Trim() + "\r\n"; } } StreamWriter sw = new StreamWriter("D:\\abc.xls", false, System.Text.Encoding.UTF8); sw.WriteLine(result); sw.Close();

C#中流寫入類StreamWriter的介紹