c# 找出目录下的所有子目录_C# 基础知识系列- 14 IO篇 文件的操作(2)
前接上一篇內容。
如果是第一次捧場的小伙伴,為了您閱讀的連貫性,煩請掃一眼《C# 基礎知識系列- 14 IO篇 文件的操作(1)》。本篇是IO之文件操作的第二篇,介紹一下目錄和路徑的相關類。下一篇介紹如何通過流來操作文件。
1.2 Directory和DirectoryInfo
1.2.1 Directory
d. 返回目錄下的所有子目錄:
public static string[] GetDirectories (string path);public static string[] GetDirectories (string path, string searchPattern);public static string[] GetDirectories (string path, string searchPattern, System.IO.EnumerationOptions enumerationOptions);public static string[] GetDirectories (string path, string searchPattern, System.IO.SearchOption searchOption);除了上文提到的 GetDirectories 方法可以直接返回目錄下所有子目錄以外,還有一組方法也可以枚舉出當前目錄下的子目錄:
public static System.Collections.Generic.IEnumerable EnumerateDirectories (string path);枚舉 path 目錄下的所有子目錄。
public static System.Collections.Generic.IEnumerable EnumerateDirectories (string path, string searchPattern);searchPattern,搜索名稱字符串,可以包含有效文本路徑和通配符(* 和 ?)的組合,但不支持正則表達式。
public static System.Collections.Generic.IEnumerable EnumerateDirectories (string path, string searchPattern, System.IO.EnumerationOptions enumerationOptions);public static System.Collections.Generic.IEnumerable EnumerateDirectories (string path, string searchPattern, System.IO.SearchOption searchOption);這兩個方法放在一起講,這兩個是對上一個方法的增強和補充。其中 EnumerationOptions 是類,可以配置查詢的條件;SearchOption 是個枚舉,選擇只查詢當前目錄的子目錄名稱還是繼續深入查詢子孫目錄。
e.查看目錄下的所有文件-補充
與子目錄查詢相同,Directory也支持這么幾組查詢方法:
public static string[] GetFiles (string path);public static string[] GetFiles (string path, string searchPattern);public static string[] GetFiles (string path, string searchPattern, System.IO.EnumerationOptions enumerationOptions);public static string[] GetFiles (string path, string searchPattern, System.IO.SearchOption searchOption);從參數上看,可以看出來這是返回子目錄下的文件列表。其中使用 searchPattern查詢名稱,enumerationOptions 作為查詢條件,searchOption 作為查詢的深度。
同樣,查詢文件也可以使用枚舉方法:
public static System.Collections.Generic.IEnumerable EnumerateFiles (string path);public static System.Collections.Generic.IEnumerable EnumerateFiles (string path, string searchPattern);public static System.Collections.Generic.IEnumerable EnumerateFiles (string path, string searchPattern, System.IO.EnumerationOptions enumerationOptions);public static System.Collections.Generic.IEnumerable EnumerateFiles (string path, string searchPattern, System.IO.SearchOption searchOption);f.獲取當前目錄
public static string GetCurrentDirectory ();在程序中調用這個方法可以獲取程序執行時的目錄,如果是在調試階段,目錄是指程序的主方法所在目錄;如果在發布之后,也就是運行階段,該目錄指程序所在目錄。
g.獲取上級目錄
public static System.IO.DirectoryInfo GetParent (string path);獲取傳入目錄的上級目錄信息。
h.目錄移動
public static void Move (string sourceDirName, string destDirName);sourceDirName 移動到 destDirName,其中destDirName所代表的目錄不能存在。這個方法有個很有意思的特點,它也支持移動文件。也就是說,如果sourceDirNanme指向的是一個文件,那么destDirName也必須是一個文件類型的路徑字符串。
i.刪除目錄
public static void Delete (string path);//刪除 path所代表的目錄,如果目錄非空則提示無法刪除public static void Delete (string path, bool recursive);// recursive指示是否同時刪除子目錄和文件以上是Directory類的一些常用方法,當然還有更多的內容留待小伙伴一起發掘。傳送門==>https://docs.microsoft.com/zh-cn/dotnet/api/system.io.directory?view=netcore-3.1
1.2.2 DirectoryInfo
之前的篇幅我們介紹了Directory的工具類所支持的方法,接下來我們看一下 DirectoryInfo有哪些屬性和方法吧。
public DirectoryInfo (string path);初始化的方式很簡單,直接傳遞一個目錄的路徑字符串,就可以獲取一個目錄信息類了。
接下來看看,DirectoryInfo支持的屬性:
public override bool Exists { get; }// 目錄是否存在public override string Name { get; }// 目錄名稱,不是路徑public System.IO.DirectoryInfo Parent { get; }//如果有上級目錄,則返回上級目錄,如果沒有則返回 nullpublic System.IO.DirectoryInfo Root { get; }//獲取目錄的根目錄我們路過了DirectoryInfo的屬性,看到了它一部分特點,那么我們該怎么使用呢?
public void Create ();創建目錄信息所代表的目錄,如果目錄已存在,則不會有任何變化 。如果這個目錄的父目錄也不存在,則自動創建父目錄
public System.IO.DirectoryInfo CreateSubdirectory (string path);創建 pathi指定的子目錄。
public override void Delete ();如果當前目錄是空目錄,調用可直接刪除,如果非空則會提示錯誤。
public void Delete (bool recursive);根據參數 recursive指定是否刪除當前目錄的子目錄。
public System.IO.DirectoryInfo[] GetDirectories ();public System.IO.DirectoryInfo[] GetDirectories (string searchPattern);public System.IO.DirectoryInfo[] GetDirectories (string searchPattern, System.IO.EnumerationOptions enumerationOptions);public System.IO.DirectoryInfo[] GetDirectories (string searchPattern, System.IO.SearchOption searchOption);獲取子目錄的數組,參數與 Directory 的同名方法一致。
public System.Collections.Generic.IEnumerable EnumerateDirectories ();public System.Collections.Generic.IEnumerable EnumerateDirectories (string searchPattern);public System.Collections.Generic.IEnumerable EnumerateDirectories (string searchPattern, System.IO.EnumerationOptions enumerationOptions);public System.Collections.Generic.IEnumerable EnumerateDirectories (string searchPattern, System.IO.SearchOption searchOption);返回一個子目錄信息的可枚舉集合。
public System.IO.FileInfo[] GetFiles ();public System.IO.FileInfo[] GetFiles (string searchPattern);public System.IO.FileInfo[] GetFiles (string searchPattern, System.IO.EnumerationOptions enumerationOptions);public System.IO.FileInfo[] GetFiles (string searchPattern, System.IO.SearchOption searchOption);嗯,依舊類似的寫法,獲取文件信息的數組
public System.Collections.Generic.IEnumerable EnumerateFiles ();public System.Collections.Generic.IEnumerable EnumerateFiles (string searchPattern);public System.Collections.Generic.IEnumerable EnumerateFiles (string searchPattern, System.IO.EnumerationOptions enumerationOptions);public System.Collections.Generic.IEnumerable EnumerateFiles (string searchPattern, System.IO.SearchOption searchOption);返回文件的可枚舉集合。
public void MoveTo (string destDirName);把當前目錄移動到對應的目錄。
依舊未完待續,下一篇將為大家介紹一下 Path類和FileInfo與DirectoryInfo的父類 FileSystemInfo 這兩個類的API,然后演示一下如何使用流來讀寫文件。在文件和目錄這塊內容里,我故意忽略了權限的介紹,這部分我將會放在進階篇中介紹。
API的介紹總是這么枯燥乏味,不過請期待一下,在IO篇完成后,我會演示一下如何做一個簡單的文件查找工具。
簡單介紹一下這個工具的內容:它會遍歷系統里所有文件的路徑信息,然后記錄到一個緩存文件中,用戶輸入一個要查詢的文件名時,我們可以通過讀取緩存文件確認文件所在目錄。
總結
以上是生活随笔為你收集整理的c# 找出目录下的所有子目录_C# 基础知识系列- 14 IO篇 文件的操作(2)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 小技巧:iOS 15 聚焦功能支持搜索
- 下一篇: java 伴随矩阵_C#计算矩阵的逆矩阵