最近由於工作上需要做乙個自動化測試工具,開始學習了c#。c#是microsoft 在2000 年7 月推出.net framework 的第1 版時提供的一種全新語言。它是一種簡單、靈活且功能強大的語言,採用了物件導向的程式設計思想。由於在這之前習慣了用c語言,剛接觸c#時感覺不太習慣,不過好在它易於學習,內部有很多現成的方法和介面供我們使用。今天這裡我主要跟大家總結一下c#的檔案操作。
檔案讀寫是許多.net 應用程式的乙個基礎性工作。這裡主要討論用於建立、讀寫檔案的主要類,支援在c#**中處理檔案系統的類。檔案是在應用程式的例項之間儲存資料的一種便利方式,它也可以用於在應用程式之間傳輸資料。檔案可以儲存使用者和應用程式配置,以便在下次執行應用程式時檢索它們。
1. 流
在.net framework 中進行的所有輸入和輸出工作都要用到流(stream)。流是序列化裝置(serial device)的抽象表示。序列化裝置可以以線性方式儲存資料,並可以按同樣的方式訪問:一次訪問乙個位元組。此裝置可以是磁碟檔案、網路通道、記憶體位置或其他支援以線性方式讀寫的物件。把裝置變成抽象的,就可以隱藏流的底層目標和源。流的型別主要有兩種:
2.用於輸入和輸出的類
system.io 命名空間包含幾乎所有的檔案操作的類,所以必須在c#應用程式中引用此命名空間才能訪問這些類,但無需完全限定型別名。下面介紹我在專案中主要用到的幾個類。
file類:靜態實用類,提供許多靜態方法,用於移動、複製和刪除檔案。可以在類上呼叫靜態方法,而無需建立它們的例項。file類的一些常用的靜態方法有copy(),create(),move()和delete()等。
fileinfo類:fileinfo 類不像file 類,它不是靜態的,沒有靜態方法,僅可用於例項化的物件。它表示磁碟或網路位置上的物理檔案。該類包含處理此檔案的方法。要完成對檔案的讀寫工作,就必須建立stream 物件。提供檔案路徑,就可以建立乙個fileinfo物件:
fileinfo afile = new fileinfo(@"d:\log.txt");
fileinfo 類也提供了與底層檔案相關的屬性,其中一些屬性可以用來更新檔案,其中很多屬性都繼承於filesysteminfo。比如我們要獲取檔案的容量(以位元組為單位),就可 以用屬性length,返回long值。這個屬性是唯讀的。
3. filestream類:表示可寫或可讀,或二者均可的檔案。此檔案可以同步或非同步地讀寫。filestream 物件表示在磁碟或網路路徑上指向檔案的流。這個類提供了在檔案中 讀寫位元組的方法,但經常使用streamreader 或streamwriter 執行這些功能。這是因為filestream 類操作的是位元組和位元組陣列,而stream 類操作的是字元資料。 4. streamwriter類:向流寫入字元資料,可以使用filestream 將其建立為基類。可以通過許多方法建立streamwriter 物件。如果已經有了filestream 物件,就可以使用此 物件來建立streamwriter 物件:
filestream afile = new filestream("log.txt", filemode.createnew);
streamwriter sw = new streamwriter(afile);
也可以直接從檔案中建立streamwriter 物件:
streamwriter sw = new streamwriter("log.txt", true);
這個建構函式的引數是檔名和乙個boolean 值,這個boolean 值規定是追加檔案,還是建立新檔案:
streamwriter 類的兩個最重要的方法:write()和writeline()。writeline()方法會寫入傳遞給它的字串,其後跟有換行符。
5. streamreader類:從流中讀取字元資料,可以使用filestream 將其建立為基類。同streamwriter 一樣,這是乙個通用類,可以用於任何流。streamreader 類包含許多 讀取資料的方法。其中該取資料最簡單的方法是read()。此方法將流的下乙個字元作為正整數值返回,如果到達了流的結尾處,則返回-1。使用convert 實用類可以把這 個值轉換為字元。
此外,可以使用readline()方法從檔案中讀取文字。這個方法讀取換行符之前的文字,並以字串的形式返回結果文字。當到達檔案尾時,該方法就返回空值,通過這種方法可以測試檔案是否已到達了尾部。注意使用了while 迴圈,以便確保在執行迴圈體的**之前讀取的行不為空,這樣就只顯示檔案的有效內容:
line = sr.readline();
while(line != null)
對於小型檔案,可以使用乙個非常方便的方法readtoend()。此方法讀取整個檔案,並將其作為字串返回。
這就是在我專案中用到的檔案類了,還有一些類沒有用到,這裡就不一一介紹了。
C 中的檔案操作
c 建立目錄 建立目錄c sixage directoryinfo d directory.createdirectory c sixage d1指向c sixage sixage1 directoryinfo d1 d.createsubdirectory sixage1 d2指向c sixage...
C 中的檔案操作
在c 中,有乙個stream這個類,所有的i o都以這個 流 類為基礎的,包括我們要認識的檔案i o,stream這個類有兩個重要的運算子 1 插入器 向流輸出資料。比如說系統有乙個預設的標準輸出流 cout 一般情況下就是指的顯示器,所以,cout write stdout n 就表示把字串 wr...
C 中的檔案操作
在c 中,有乙個stream這個類,所有的i o都以這個 流 類為基礎的,包括我們要認識的檔案i o,stream這個類有兩個重要的運算子 1 插入器 向流輸出資料。比如說系統有乙個預設的標準輸出流 cout 一般情況下就是指的顯示器,所以,cout write stdout n 就表示把字串 wr...