(2008-09-10 10:13:48)
在System.IO名稱空間中包含了用於檔案輸入輸出的主要類。
File:實用類,提供許多靜態方法,用於移動、複製和刪除檔案。
Directory:實用類,提供許多靜態方法,用於移動、複製和刪除目錄。
Path:實用類,用於處理路徑名稱。
FileInfo:表示磁碟上的物理檔案,具有可以處理此檔案的方法。要完成對檔案的讀取和寫入工作,就必須建立Stream對象。
DirectoryInfo:表示磁碟上的物理目錄,具有可以處理此目錄的方法。
FileStream:表示可以被寫或被讀,或二者均可的檔案。此檔案可以同步或非同步讀和寫。
StreamReader:從流中讀取字元資料,並可以通過使用FileStream被建立為基類。
StreamWriter:向流寫字元資料,可以通過使用FileStream被建立為基類。
FileSystemWatcher:用於監控檔案和目錄,並在這些位置發生變化時,給出應用程式可以捕獲的事件。
File類一些常用的靜態方法:
方法
說明
Copy()
將檔案複製到規定的位置
Create()
在規定的路徑上建立檔案
Delete()
刪除檔案
Open()
在規定的路徑上返回FileStream對象
Move()
將規定的檔案移動到新位置。可以在新位置為檔案規定不同的名稱
Directory類一些常用的靜態方法:
方法
說明
CreateDirectory()
建立具有規定路徑的目錄
Delete()
刪除規定的目錄以及其中的所有檔案
GetDirectories()
返回表示目前的目錄之下的目錄的Directory對象的數組
GetFiles()
返回在目前的目錄中的File對象的數組
Move()
將規定的目錄移動到新位置。可以在新位置為檔案夾規定一個新名稱
FileInfo類:
它沒有靜態方法,僅可用於執行個體化的對象。FileInfo對象表示在磁碟或網路位置的檔案。注意它不是流。為了實現對檔案的讀取或寫入,必須建立Stream對象。
如果僅在對象上進行單一方法調用,則可以使用靜態File類。在此,靜態調用要快一些,因為.Net Framework不必遍曆執行個體化新對象並調用方法的過程。但是如果應用程式在檔案上執行幾種操作,在執行個體化FileInfo對象並使用其方法就更好一些。這會節省時間,因為對象將在檔案系統上引用正確的檔案,而靜態類就必須每次都尋找檔案。
FileInfo類提供的基礎性的屬性,可用來更新檔案。
屬性
說明
Attributes
擷取或者設定當前檔案的屬性
CreationTime
擷取當前檔案的建立日期和時間
DirectoryName
返迴文件目錄的路徑
Exists
判斷是否存在檔案
FullName
檢索檔案的完整路徑
Length
擷取檔案的容量
Name
僅僅返迴文件的名稱,而不是完整的檔案位置路徑
DirectoryInfo類:
DirectoryInfo類的作用類似於FileInfo類。它是一個執行個體化的對象,表示電腦上的單一目錄。同FileInfo類—樣,在Directory和DirectoryInfo之間可以複製許多方法調用。當使用這二者時,可以便用相同的原則:如果進行單一調用,就使用靜態Directory類。如果進行一系列調用,則使用執行個體化的DirectoryInfo對象。
DirectoryInfo類與FileInfo類共用幾乎所有相同的屬性,DirectoryInfo類作用在無檔案的目錄上除外。
FileStream對象:
表示在磁碟或網路路徑上指向檔案的流。當類提供向檔案讀取和寫入位元組的方法時,經常使用StreamReader和StreamWriter執行這些功能。這是因為FileStream類操作位元組和位元組數組,而Stream類操作字元資料。
還有幾種方法可以建立FileStream對象。建構函式具有許多不同的重載/版本,但是最簡單的建構函式僅僅帶有兩個參數,即檔案名稱和FileMode枚舉。
FileStream aFile = new FileStream("a.txt",FileMode.OpenOrCreate);
FileMode枚舉的成員:
FileMode枚舉成員
說明
Append
如果檔案存在,就開啟檔案,將檔案位置移動到檔案的末尾,並建立個新檔案。FileMode.Append僅可以與枚舉FileAccess.Write聯合使用
Create
建立新檔案,如果存在這樣的檔案就破壞它
CreateNew
建立新檔案,但是如果已經存在了此檔案,則拋出異常
Open
開啟現有的檔案。如果不存在所規定的檔案,則拋出異常
OpenOrCreate
如果檔案存在,則規定開啟檔案,否則就建立新檔案。如果檔案已經存在,則保留在檔案中的資料
Truncate
開啟現有檔案,清除其內容。然後我們可以向檔案寫入全新的資料,但是保留檔案的初始建立日期。必須存在有檔案,否則就會拋出異常
前面的建構函式預設以唯讀模式開啟檔案。需要一個附加參數規定不同的存取層級,此參數即FileAccess參數。
FileStream aFile = new FileStream("a.txt",FileMode.OpenOrCreate,FileAccess.Write);
此行代碼將開啟檔案,對檔案進行寫訪問。對檔案的任何讀的企圖都會導致拋出異常。僅有3種類型的FileAccess枚舉:Read,ReadWirte和Write。可以開啟一個檔案,唯讀、唯寫或進行讀寫操作。此屬性的作用是:基於使用者的身分識別驗證層級改變使用者對檔案的訪問。
例:從檔案中讀取資訊(其中用到了將位元組塊轉換為字元塊的方法)
例:將相應的字元資訊寫入到檔案中(其中用到了將字元塊轉換為位元組塊的方法,然後再進行寫入操作)
StreamWriter類:
允許我們將字元和字串寫入到檔案中,它處理重要的轉換和向FileStream對象寫入工作。
如果已經有了FileStream對象,則可以使用此對象來建立StreamWriter類。
FileStream aFile = new FileStream(@"Temp.txt",FileMode.CreateNew);
StreamWriter sw = new StreamWriter(aFile);
也可以直接從檔案中建立StreamWriter對象。
StreamWriter sw = new StreamWriter(@"Temp.txt",true);
這個建構函式中的後一個參數的意義是:
false:建立一個新檔案,或者截取現有檔案並開啟它。
true:開啟檔案,保留原來的資料。如果找不到檔案,則建立一個新檔案。
例子見程式。
StreamReader類:
從檔案中讀取資料,可以用於任何流。
利用FileStream對象建立。
FileStream aFile = new FileStream(@"Temp.txt",FileMode.Open);
StreamReader sr = new StreamReader(aFile);
直接從檔案中建立。
StreamReader sw = new StreamReader(@"Temp.txt");
例子見程式。/Files/yssoft/Usefile.rar