C#學習筆記(二十一):使用檔案基礎

來源:互聯網
上載者:User

 (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

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.