天天看點

C#經驗:C#File和FileInfo類的使用

檔案和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                  打開指定路徑上的FileStream

GetCreationTime       傳回指定檔案或目錄的建立日期和時間

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