C 檔案操作小結

2021-10-05 09:24:37 字數 3049 閱讀 6682

file類與fileinfo類對比:

通過檢視兩個類的定義的底層**我們可以發現,file類是靜態的,它內部的方法也都是靜態的;而finleinfo類是非靜態的,也就是說,在使用的時候必須要例項化後通過它的物件名來進行操作,還有乙個小細節,fileinfo類還有乙個修飾sealed代表它同時是乙個密封類,意味著我們不能繼承這個類也就不存在說重寫它內部的方法了。

至於說兩者的方法都是大同小異的,很多都是重複的,如下面的例子:

(1)推斷檔案是否存在exists方法

返回bool型,假設path為空或者沒有許可權,則返回false

file:推斷c盤根資料夾下有沒有test.txt檔案:

file.exists(「c:\test.txt」)

fileinfo:

fileinfo fileinfo = new fileinfo(「c:\test.txt」)

if(fileinfo.exists){}

(2)建立檔案用create方法

file類的create方法有4中過載方法:

public static filestream create(string path)

public static filestream create(string path,int buffersize)

public static filestream create(string path,int buffersize,fileoptions options)

public static filestream create(string path,int buffersize,fileoptions options,filesecurity filesecurity)

file類create方法引數說明

path 檔名稱

buffersize 用於讀取和寫入檔案的已放入緩衝區的位元組數

options fileoptions值之中的乙個,它描寫敘述怎樣建立或改寫該檔案

filesecurity filesecurity值之中的乙個,它確定檔案的訪問控制和審核安全性

file類:

file.create(「c:\test.txt」)

fileinfo類:

fileinfo fileinfo = new fileinfo(「c:\test.txt」)

fileinfo.create();

(3)拷貝檔案用file類的copy方法以及fileinfo類的copyto方法

file類的copy方法或者fileinfo類的copyto方法

file類的copy方法有兩種過載方式

public static void copy(string sourcefilename,string destfilename)

public static void copy(string sourcefilename,string destfilename,bool overwrite)

sourcefilename表示要複製的檔案,destfilename表示目標檔案的名稱,不能是資料夾,假設是第一種過載,則目標檔案引數不能是現有檔案。

overwrite表示能否夠改寫目標檔案

將c盤根資料夾下的test.txt文字檔案拷貝到d盤根資料夾下:

(這邊注意措辭,說明d盤根資料夾下是沒有test.txt檔案的)

file.copy(「c:\test.txt」,「d:\test.txt」)

fileinfo類的copyto方法也有兩種過載方式

public fileinfo copyto(string destfilename)

public fileinfo copyto(string destfilename,bool overwrite)

fileinfo fileinfo = new fileinfo(「c:\test.txt」);

fileinfo.copyto(「d:\test.txt」,true);

(4)移動檔案用file類的move方法和fileinfo類的moveto方法

file類-move方法-

public static void move(string sourcefilename,string destfilename)

file.move(「c:\test.txt」,「d:\test.txt」)

fileinfo類-moveto方法-publicvoid moveto(string destfilename)

fileinfo fileinfo = new fileinfo(「c:\test.txt」);

fileinfo.moveto(「d:\test.txt」);

(5)刪除檔案用delete方法

file類-delete方法-public staticvoid delete(string path)

file.delete(「c:\test.txt」)

fileinfo類-delete方法-publicvoid delete(string path)

fileinfo fileinfo = new fileinfo(「c:\test.txt」);

fileinfo.delete(「d:\test.txt」);

但是通過觀察我們也發現了很明顯不同的地方,file中的方法都是需要傳入引數的,而fileinfo中的方法則不需要再傳入引數了,其實程式這樣設計也很合理,因為fileinfo在建立物件的時候已經明確知道是哪乙個檔案物件了,後邊再執行方法都是對這個檔案的操作;而file類則不同,它沒有物件的概念,每次操作都必須明確傳入檔案的引數。這樣我們就能推斷出,後期當我們需要操作檔案的時候到底用哪乙個呢?其實用哪乙個都沒有明確的規定只要功能實現即可,但是通過上述方法的總結我們發現,如果僅僅是對乙個檔案操作一次即可,那麼建議使用file效率會高一些,如果是對乙個檔案需要多次操作,那麼使用fileinfo即可,至於說裡邊涉及到的什麼安全不安全的問題,個人覺得對於初學者來說意義不大!

C 對檔案操作小結

private void button2 click object sender,eventargs e private void button1 click object sender,eventargs e 流檔案操作 filestream fs new filestream filepath,...

c 中對檔案的操作小結

你平時是怎麼讀取檔案的?使用流讀取。是的沒錯,c 給我們提供了非常強大的類庫 又一次吹捧了.net一番 裡面封裝了幾乎所有我們可以想到的和我們沒有想到的類,流是讀取檔案的一般手段,那麼你真的會用它讀取檔案中的資料了麼?真的能讀完全麼?通常我們讀取乙個檔案使用如下的步驟 1 宣告並使用file的ope...

C 操作XML小結

一 簡單介紹 using system.xml 初始化乙個xml例項 xmldocument xml new xmldocument 指定乙個節點 xmlnode root xml.selectsinglenode root 獲取節點下所有直接子節點 xmlnodelist childlist ro...