我想了解讀寫文件的不同方式,以及它們的優缺點。像什麼時候使用TextWriter/TextReader當File.Create或StreamReader/StreamWriter FileStream等用C#讀寫文件的不同方式
什麼時候用什麼?
我想了解讀寫文件的不同方式,以及它們的優缺點。像什麼時候使用TextWriter/TextReader當File.Create或StreamReader/StreamWriter FileStream等用C#讀寫文件的不同方式
什麼時候用什麼?
的File.*
靜態方法是建設新FileStream
S的只是簡單的方法,FileWriter
小號等,他們是非常有用的 - 我一般使用文件*優先於顯式調用構造函數,除非我需要一些行爲,這是不照顧。
主要關鍵的一點是:
Stream
TextWriter
/TextReader
如果你開始試圖讀取二進制數據TextReader
,不好的事情會發生。
這些過程使用的基本機制是相同的,所以沒有一個比另一個「更好」。
區別在於執行某些任務的難易程度。例如,File.CreateText返回一個StreamWriter,它在功能上與手動創建StreamWriter並使用它寫入文件沒有區別。它只需要更少的代碼。 (我認爲它是一條捷徑)。
我當然沒有接近這個主題的專家,但我只想指出,TextReader
和TextWriter
是許多其他類用來處理不同類型I/O的基類(我相信是抽象類) O. StreamReader
和StreamWriter
應該在您實際處理包含文本的Stream
對象時使用,例如文本文件的FileStream
。但是TextReader
不一定需要處理流;以StringReader
類爲例,它也繼承自TextReader
,並且只讀取一個簡單的字符串。
Stream是一個抽象類,它表示字節的序列。
TextReader/TextWriter是抽象類,允許你讀/寫字符。
File.*
靜態方法只是簡化FileStream創建的簡便方法。
不要忘了靜態輔助方法System.IO.File.WriteAllByte(...)
,.WriteAllText(...)
.WriteAllLines(...)
及其相應的.ReadAllByte(...)
,.ReadAllText(...)
和.ReadAllLines(...)
方法。如果我沒有任何理由要使用流,我會使用它們,因爲它們是快速getter/putter文件IO方法。
我忘了XML。什麼是XML? – Tanmoy 2009-11-12 11:46:44
XML API往往有直接加載文件的方法,例如'XDocument.Load' – 2009-11-13 10:14:45