C# System.IO 檔案流輸入輸出
一、讀寫文字檔案
可以用fileStream來讀寫文字檔案,但是FileStream是通過位元組形式來讀寫資料的,要把位元組資料轉換為文字,要自己處理編碼轉換。
對於文字檔案的讀寫,通常用 StreamReader類和 StreamWriter類更方便。其底層是通過FileStream實現讀寫文字檔案的。
1、建構函式
Public StreamReader(string path,Encoding encodeing)
其中path指定要讀取的完整檔案路徑,encoding指定要使用的位元組編碼。例如GB2312,UTF8等編碼形式
using System; using System.IO; using System.Text; namespace StreamReader { class Program { [STAThread] public static void Main(string[] args) { StreamReader sr=new StreamReader("f:\\temp.txt",Encoding.GetEncoding("gb2312")); string line; while((line=sr.ReadLine())!=null) { Console.WriteLine(line); } sr.close(); } } }
二、寫入文字檔案
與StreamReader類對應的類是StreamWriter類,它專門用於寫入文字檔案
1、建構函式
Public StreamWrite(string path,bool append,Encoding encoding);
其中path指定要寫入的完整檔案路徑,append為false則該檔案被改寫,如果該檔案存在,並且append為true,則資料被追加到該檔案中。否則將建立新檔案。Encoding指定要使用的位元組編碼。
(注意:append為true為追加,append為false為覆蓋)
using System; using System.IO; using System.Text; namespace StreamReader { class Program { [STAThread] public static void Main(string[] args) { StreamWriter sw=new StreamWriter("f:\\temp.txt",true,Encoding.GetEncoding("gb2312")); string line="hello world!; sw.WriteLine(line); sw.close(); } } }
三、Stream類
是派生出各種類的抽象類,處理位元組流
其中一些派生類包括
– FileStream
– MemoryStream
– BufferedStream
– CryptoStream
方法包括:
3.1FileStream類建構函式
FileStream(string FilePath, FileMode)
FileStream(string FilePath, FileMode, FileAccess)
FileStream(string FilePath, FileMode, FileAccess, FileShare)
方法:
int Read(byte array, offset, count)
int ReadByte( )
void Write(byte array, offset, count)
void WriteByte(byte value)
列舉數:
FileMode 列舉數
– Append
– Create
/若檔案已存在,則引發IO異常
– CreateNew
– Open
– OpenOrCreate
– Truncate
FileAccess 列舉數
– Read
– Write
– ReadWrite
FileShare 列舉數
– None
– Read
– Write
– ReadWrite
3.2MemoryStream類
用於從記憶體中讀取資料和將資料寫入記憶體中
以下是 MemoryStream 的一些方法
int Read(byte array, offset, count)
int ReadByte( )
void Write(byte array, offset, count)
void WriteByte(byte value)
void WriteTo(Stream stream)
3.3BufferedStream類
用於在緩衝區中讀取和寫入
• 當緩衝區滿(預設緩衝區大小:4096 位元組)或關閉時,內容將自動重新整理輸出到底層流
它有兩個過載的建構函式
Public BufferedStream(Stream StName);
Public BufferedStream(Stream StName,int bsize);
3.4CryptoStream
對資料流中的資料進行加密、解密
using System.Security.Cryptography;
使用前加上上面的名稱空間
四、Dirctory類
1.Directory類
目錄使用 Directory類,可以用目錄類建立、移動目錄,並可列舉目錄及子目錄的內容。Directory類全部是靜態方法。
2、DirectoryInfo類
在使用DirectoryInfo類的屬性和方法前必須先建立它的物件例項,在建立時需要指定該例項所對應的目錄。例如:DirectoryInfo di=new DirectoryInfo(''c:\\mydir'');DirectoryInfo類的常用方法見表。
五、Path類