天天看點

C# 檔案類中 File ,FileInfo 類的主要差別

System.IO命名空間中提供的檔案操作類有File和FileInfo,這兩個類的功能基本相同,隻是File是靜态類,其中所有方法都是靜态的,可以通過類名直接調用,不需要執行個體化。而FileInfo是普通類,隻有執行個體化對象後才可以調用其中的方法。

File類是一個靜态類,它對應整個檔案系統進行操作,方法均為靜态文法;如果隻是對檔案進行少量的操作,如判斷檔案是否存在之類或者對很多的檔案進行操作,建議使用File類,可以避免頻繁建立和釋放對象的系統開銷。

FileInfo類是一個執行個體類,它對應某一個檔案進行操作,方法大部分為執行個體方法,它的操作有可能是調用的File中的對應靜态方法。如果是對一個檔案進行大量的操作,建議使用FileInfo類。

那麼為什麼有時還使用FileInfo呢?因為每次通過File類調用某個方法時,都要占用一定的cpu處理時間來進行安全檢查,即使使用不同的File類的方法重複通路同一個檔案時也是如此。而FileInfo類隻在建立FileInfo對象時執行一次安全檢查。

為友善操作,有很多時候不需要生成一個FileInfo對象那麼麻煩。
比如:複制一個檔案到另外一個地方:
File.Copy(filePath,newFilePath)就可以。
如果用FileInfo
可能需要:
FileInof fi = new FileInfo();
fi.CopyTo(newFilePath);

我們可以使用以下規則确定:

1、如果應用程式在檔案上執行幾種操作,則使用FileInfo類更好一些,因為建立對象時,已經引用了正确的檔案,而靜态類每次都要尋找檔案,會花費更多時間。

2、如果進行單一的方法調用,則建議用File類,不必執行個體化對象。      

You are never too old to set another goal or to dream a new dream!!!