C#使用文件基礎http://www.cnblogs.com/Bear-Study-Hard/archive/2006/03/29/361785.html在System.IO名稱(chēng)空間中包含了用于文件輸入輸出的主要類(lèi)。
File:實(shí)用類(lèi),提供許多靜態(tài)方法,用于移動(dòng)、復制和刪除文件。
Directory:實(shí)用類(lèi),提供許多靜態(tài)方法,用于移動(dòng)、復制和刪除目錄。
Path:實(shí)用類(lèi),用于處理路徑名稱(chēng)。
FileInfo:表示磁盤(pán)上的物理文件,具有可以處理此文件的方法。要完成對文件的讀取和寫(xiě)入工作,就必須創(chuàng )建Stream對象。
DirectoryInfo:表示磁盤(pán)上的物理目錄,具有可以處理此目錄的方法。
FileStream:表示可以被寫(xiě)或被讀,或二者均可的文件。此文件可以同步或異步的讀和寫(xiě)。
StreamReader:從流中讀取字符數據,并可以通過(guò)使用FileStream被創(chuàng )建為基類(lèi)。
StreamWriter:向流寫(xiě)字符數據,可以通過(guò)使用FileStream被創(chuàng )建為基類(lèi)。
FileSystemWatcher:用于監控文件和目錄,并在這些位置發(fā)生變化時(shí),給出應用程序可以捕獲的事件。
File類(lèi)一些常用的靜態(tài)方法:
方法
說(shuō)明
Copy()
將文件復制到規定的位置
Create()
在規定的路徑上創(chuàng )建文件
Delete()
刪除文件
Open()
在規定的路徑上返回FileStream對象
Move()
將規定的文件移動(dòng)到新位置??梢栽谛挛恢脼槲募幎ú煌拿Q(chēng)
Directory類(lèi)一些常用的靜態(tài)方法:
方法
說(shuō)明
CreateDirectory()
創(chuàng )建具有規定路徑的目錄
Delete()
刪除規定的目錄以及其中的所有文件
GetDirectories()
返回表示當前目錄之下的目錄的Directory對象的數組
GetFiles()
返回在當前目錄中的File對象的數組
Move()
將規定的目錄移動(dòng)到新位置??梢栽谛挛恢脼槲募A規定一個(gè)新名稱(chēng)
FileInfo類(lèi):
它沒(méi)有靜態(tài)方法,僅可用于實(shí)例化的對象。FileInfo對象表示在磁盤(pán)或網(wǎng)絡(luò )位置的文件。注意它不是流。為了實(shí)現對文件的讀取或寫(xiě)入,必須創(chuàng )建Stream對象。
如果僅在對象上進(jìn)行單一方法調用,則可以使用靜態(tài)File類(lèi)。在此,靜態(tài)調用要快一些,因為.Net Framework不必遍歷實(shí)例化新對象并調用方法的過(guò)程。但是如果應用程序在文件上執行幾種操作,在實(shí)例化FileInfo對象并使用其方法就更好一些。這會(huì )節省時(shí)間,因為對象將在文件系統上引用正確的文件,而靜態(tài)類(lèi)就必須每次都尋找文件。
FileInfo類(lèi)提供的基礎性的屬性,可用來(lái)更新文件。
屬性
說(shuō)明
Attributes
獲取或者設置當前文件的屬性
CreationTime
獲取當前文件的創(chuàng )建日期和時(shí)間
DirectoryName
返回文件目錄的路徑
Exists
判斷是否存在文件
FullName
檢索文件的完整路徑
Length
獲取文件的容量
Name
僅僅返回文件的名稱(chēng),而不是完整的文件位置路徑
DirectoryInfo類(lèi):
DirectoryInfo類(lèi)的作用類(lèi)似于FileInfo類(lèi)。它是一個(gè)實(shí)例化的對象,表示計算機上的單一目錄。同FileInfo類(lèi)—樣,在Directory和DirectoryInfo之間可以復制許多方法調用。當使用這二者時(shí),可以便用相同的原則:如果進(jìn)行單一調用,就使用靜態(tài)Directory類(lèi)。如果進(jìn)行一系列調用,則使用實(shí)例化的DirectoryInfo對象。
DirectoryInfo類(lèi)與FileInfo類(lèi)共享幾乎所有相同的屬性,DirectoryInfo類(lèi)作用在無(wú)文件的目錄上除外。
FileStream對象:
表示在磁盤(pán)或網(wǎng)絡(luò )路徑上指向文件的流。當類(lèi)提供向文件讀取和寫(xiě)入字節的方法時(shí),經(jīng)常使用StreamReader和StreamWriter執行這些功能。這是因為FileStream類(lèi)操作字節和字節數組,而Stream類(lèi)操作字符數據。
還有幾種方法可以創(chuàng )建FileStream對象。構造函數具有許多不同的重載/版本,但是最簡(jiǎn)單的構造函數僅僅帶有兩個(gè)參數,即文件名和FileMode枚舉。
FileStream aFile = new FileStream("a.txt",FileMode.OpenOrCreate);
FileMode枚舉的成員:
FileMode枚舉成員
說(shuō)明
Append
如果文件存在,就打開(kāi)文件,將文件位置移動(dòng)到文件的末尾,并創(chuàng )建個(gè)新文件。FileMode.Append僅可以與枚舉FileAccess.Write聯(lián)合使用
Create
創(chuàng )建新文件,如果存在這樣的文件就破壞它
CreateNew
創(chuàng )建新文件,但是如果已經(jīng)存在了此文件,則拋出異常
Open
打開(kāi)現有的文件。如果不存在所規定的文件,則拋出異常
OpenOrCreate
如果文件存在,則規定打開(kāi)文件,否則就創(chuàng )建新文件。如果文件已經(jīng)存在,則保留在文件中的數據
Truncate
打開(kāi)現有文件,清除其內容。然后我們可以向文件寫(xiě)入全新的數據,但是保留文件的初始創(chuàng )建日期。必須存在有文件,否則就會(huì )拋出異常
前面的構造函數默認以只讀模式打開(kāi)文件。需要一個(gè)附加參數規定不同的訪(fǎng)問(wèn)級別,此參數即FileAccess參數。
FileStream aFile = new FileStream("a.txt",FileMode.OpenOrCreate,FileAccess.Write);
此行代碼將打開(kāi)文件,對文件進(jìn)行寫(xiě)訪(fǎng)問(wèn)。對文件的任何讀的企圖都會(huì )導致拋出異常。僅有3種類(lèi)型的FileAccess枚舉:Read,ReadWirte和Write??梢源蜷_(kāi)一個(gè)文件,只讀、只寫(xiě)或進(jìn)行讀寫(xiě)操作。此屬性的作用是:基于用戶(hù)的身份驗證級別改變用戶(hù)對文件的訪(fǎng)問(wèn)。
例:從文件中讀取信息(其中用到了將字節塊轉換為字符塊的方法)
例:將相應的字符信息寫(xiě)入到文件中(其中用到了將字符塊轉換為字節塊的方法,然后再進(jìn)行寫(xiě)入操作)
StreamWriter類(lèi):
允許我們將字符和字符串寫(xiě)入到文件中,它處理重要的轉換和向FileStream對象寫(xiě)入工作。
如果已經(jīng)有了FileStream對象,則可以使用此對象來(lái)創(chuàng )建StreamWriter類(lèi)。
FileStream aFile = new FileStream(@"Temp.txt",FileMode.CreateNew);
StreamWriter sw = new StreamWriter(aFile);
也可以直接從文件中創(chuàng )建StreamWriter對象。
StreamWriter sw = new StreamWriter(@"Temp.txt",true);
這個(gè)構造函數中的后一個(gè)參數的意義是:
false:創(chuàng )建一個(gè)新文件,或者截取現有文件并打開(kāi)它。
true:打開(kāi)文件,保留原來(lái)的數據。如果找不到文件,則創(chuàng )建一個(gè)新文件。
例子見(jiàn)程序。
StreamReader類(lèi):
從文件中讀取數據,可以用于任何流。
利用FileStream對象創(chuàng )建。
FileStream aFile = new FileStream(@"Temp.txt",FileMode.Open);
StreamReader sr = new StreamReader(aFile);
直接從文件中創(chuàng )建。
StreamReader sw = new StreamReader(@"Temp.txt");