C 檔案操作基礎之File類和FileInfo類

2021-08-30 04:41:45 字數 3907 閱讀 6986

檔案和i/o流的差異:

檔案是一些具有永久儲存及特定順序的位元組組成的乙個有序的、具有名稱的集合。因此對於檔案,我們常常想到目錄路徑,磁碟儲存,檔案和目錄名等方面。i/o流提供一種後備儲存寫入位元組和從後備儲存讀取位元組的方式。後備儲存可以為多種儲存媒介之一。

system.io命名空間中的常用類:

binaryreader     用特定的編碼將基元資料型別讀作二進位制值binarywriter     以二進位制形式將基元型別寫入流,並支援用特定的編碼寫入字串directory        公開用於建立、移動和列舉通過目錄和子目錄的靜態方法,無法被繼                  承directoryinfo    公開用於建立、移動和列舉目錄和子目錄的例項方法,無法被繼承file             提供建立、複製、刪除、移動和開啟檔案的靜態方法,協助建立                      filestream物件fileinfo         提供建立、複製、刪除、移動和開啟檔案的例項方法,並且幫助建立                  filestream物件filestream       公開以檔案為主的stream,既支援同步讀寫操作,也支援非同步讀寫操                  作filesysteminfo   為fileinfo和directoryinfo物件提供基類streamreader     實現乙個textreader,使其以一種特定的編碼從位元組流中讀取字元streamwriter     實現乙個textwriter,使其以一種特定的編碼向流中寫入字元

1.file類:

copy                  將現有檔案複製到新檔案

create                在指定路徑中建立檔案delete                刪除指定的檔案,如果指定的檔案不存在,則不引起異常exists                確定指定的檔案是否存在move                  將指定檔案移到新位置,並提供指定新檔名的選項open                  開啟指定路徑上的filestreamgetcreationtime       返回指定檔案或目錄的建立日期和時間openread              開啟現有檔案進行讀取opentext              開啟現有utf-8編碼文字檔案以進行讀取openwrite             開啟現有檔案進行寫入

2.fileinfo類:

directory       獲取父目錄的例項

exists          獲取指示檔案是否存在的值

fullname        獲取目錄或檔案的完整目錄

length          獲取當前檔案的大小

name            獲取檔名

3.file類和fileinfo類的基本操作方法

注意:由於file類中的所有方法都是靜態的,所以如果只想執行乙個操作,那麼使用file類中方法的效率比使用相應的fileinfo類中的方法可能更高

file類中的方法都是靜態方法,在使用時需要對所有方法都執行安全檢查。因此如果打算多次重用某個物件,可考慮改用fileinfo類中的相應方法,因為不總是需要安全檢查。

(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");

C 檔案操作基礎之File類和FileInfo類

using system using system.collections.generic using system.linq using system.text using system.threading.tasks using system.io public class maintainfi...

C 檔案操作 File類和FileInfo類

file類可以對檔案進行讀寫,對單個檔案處理的效率比fileinfo類高,file類的方法都是靜態方法,呼叫的時候直接用類呼叫 using system using system.collections.generic using system.linq using system.text usin...

C 檔案操作 File類

file類的常用靜態方法表 方 法 說 明 create 在指定路徑中建立檔案 delete 刪除指定的檔案 exists 判斷指定的檔案是否存在 open 開啟指定路徑上的檔案 openread 開啟檔案以進行讀取 openwrite 開啟檔案以進行寫入 move 將指定檔案移到新位置 copy ...