標籤:寫入 dex 工作 影響 space 初始化 not 資料類型 value
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 為 Null 參考(在 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 = "@006|銷售代表|[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的介紹