本文的内容包括:
1,檔案基本操作:搜尋,建立,複制,剪切,删除,重命名。
2,File和FileInfo
3,搜尋:檔案名和子目錄
4,複制的方法:File和FileInfo
5,剪切:同盤和不同盤
6,重命名:利用FileInfo.MoveTo實作重命名。
7,删除:到資源回收筒和徹底删除。
8,多線程時遇到的問題,以及解決辦法。
檔案的基本操作包括搜尋,建立,複制,剪切,删除,重命名等。在C#中可以使用File的一系列靜态方法,也可以是FileInfo對象的方法來達到同樣的功能。關于File和FileInfo的概念就不多說了,到處都有,當然官方的是最權威的。這裡重點介紹每個操作的一些注意點。
搜尋
搜尋檔案可以用Directory.GetFiles方法,
public static string[] GetFiles ( string path, string searchPattern, SearchOption searchOption )
path:在哪個路徑下搜尋。
searchPattern:搜尋的檔案特征是什麼。如果是jpg檔案,則是”*.jpg”。
SearchOption:AllDirectories和TopDirectoryOnly之一。AllDirectories表示在搜尋操作中包括目前目錄和所有子目錄。TopDirectoryOnly表示僅在搜尋中包括目前目錄。
也可以使用DirectoryInfo對象的方法來達到同樣的功能。
複制
複制檔案使用File.Copy()或FileInfo.CopyTo().
剪切
剪切檔案使用File.Move()或FileInfo.MoveTo()。
需要說明的是,如果在同一個邏輯磁盤進行剪切操作,實際上隻是将檔案的索引進行了更改,而檔案實際存儲的磁盤實體位置并沒有發生變化。
重命名
可以通過File.Move()或者FileInfo的MoveTo (string destFileName)來實作,destFileName就是新的檔案名。同一目錄下的重命名,也可以實作。
删除
删除檔案使用FIle.Delete()或者FileInfo.Delete()。這個方法是将檔案從磁盤直接删除,有沒有選項是删除到資源回收筒呢?
多線程下的檔案操作
如果多個線程同時操作一個檔案,會出現類似“檔案正被另一程序占用”的異常。此時應嚴格隔離線程間對檔案占用的沖突。