一、Directory類
Directory 類
https://docs.microsoft.com/zh-cn/dotnet/api/system.io.directory?view=netframework-4.0
1、定義
公開用于通過目錄和子目錄進行創(chuàng)建、移動和枚舉的靜態(tài)方法。此類不能被繼承。
命名空間:System.IO
程序集:mscorlib.dll
繼承:Object→Directory
屬性:ComVisibleAttribute
[System.Runtime.InteropServices.ComVisible(true)]
public static class Directory
將 Directory 類用于典型的操作,例如復(fù)制、移動、重命名、創(chuàng)建和刪除目錄。
2、Directory 類的方法
CreateDirectory(String) 在指定路徑中創(chuàng)建所有目錄和子目錄,除非它們已經(jīng)存在。
CreateDirectory(String, DirectorySecurity) 在指定路徑中創(chuàng)建所有目錄(除非已存在),并應(yīng)用指定的 Windows 安全性。
Delete(String) 從指定路徑刪除空目錄。
Delete(String, Boolean) 刪除指定的目錄,并刪除該目錄中的所有子目錄和文件(如果表示)。
EnumerateDirectories(String) 返回指定路徑中的目錄完整名稱的可枚舉集合。
EnumerateDirectories(String, String) 返回指定路徑中與搜索模式匹配的目錄完整名稱的可枚舉集合。
EnumerateDirectories(String, String, SearchOption) 返回指定路徑中與搜索模式匹配的目錄完整名稱的可枚舉集合,還可搜索子目錄。
EnumerateFiles(String) 返回指定路徑中的完整文件名的可枚舉集合。
EnumerateFiles(String, String) 返回指定路徑中與搜索模式匹配的完整文件名的可枚舉集合。
EnumerateFiles(String, String, SearchOption) 返回指定路徑中與搜索模式匹配的完整文件名的可枚舉集合,還可以搜索子目錄。
EnumerateFileSystemEntries(String) 返回指定路徑中的文件名和目錄名的可枚舉集合。
EnumerateFileSystemEntries(String, String) 返回指定路徑中與搜索模式匹配的文件名和目錄名的可枚舉集合。
EnumerateFileSystemEntries(String, String, SearchOption) 返回指定路徑中與搜索模式匹配的文件名稱和目錄名的可枚舉集合,還可以搜索子目錄。
Exists(String) 確定給定路徑是否引用磁盤上的現(xiàn)有目錄。
GetAccessControl(String) 獲取 DirectorySecurity 對象,該對象封裝指定目錄的訪問控制列表 (ACL) 項。
GetAccessControl(String, AccessControlSections) 獲取一個 DirectorySecurity 對象,它封裝指定目錄的指定類型的訪問控制列表 (ACL) 條目。
GetCreationTime(String) 獲取目錄的創(chuàng)建日期和時間。
GetCreationTimeUtc(String) 獲取目錄創(chuàng)建的日期和時間,其格式為協(xié)調(diào)通用時 (UTC)。
GetCurrentDirectory() 獲取應(yīng)用程序的當前工作目錄。
GetDirectories(String) 返回指定目錄中的子目錄的名稱(包括其路徑)。
GetDirectories(String, String) 返回指定目錄中與指定的搜索模式匹配的子目錄的名稱(包括其路徑)。
GetDirectories(String, String, SearchOption) 返回與在指定目錄中的指定搜索模式匹配的子目錄的名稱(包括其路徑),還可以選擇地搜索子目錄。
GetDirectoryRoot(String) 返回指定路徑的卷信息、根信息或兩者同時返回。
GetFiles(String) 返回指定目錄中文件的名稱(包括其路徑)。
GetFiles(String, String) 返回指定目錄中與指定的搜索模式匹配的文件的名稱(包含其路徑)。
GetFiles(String, String, SearchOption) 返回指定目錄中與指定的搜索模式匹配的文件的名稱(包含其路徑),使用某個值確定是否要搜索子目錄。
GetFileSystemEntries(String) 返回指定路徑中的所有文件和子目錄的名稱。
GetFileSystemEntries(String, String) 返回一個數(shù)組,其中包含與指定路徑中的搜索模式相匹配的文件名和目錄名稱。
GetFileSystemEntries(String, String, SearchOption) 返回指定路徑中與搜索模式匹配的所有文件名和目錄名的數(shù)組,還可以搜索子目錄。
GetLastAccessTime(String) 返回上次訪問指定文件或目錄的日期和時間。
GetLastAccessTimeUtc(String) 返回上次訪問指定文件或目錄的日期和時間,其格式為協(xié)調(diào)通用時 (UTC)。
GetLastWriteTime(String) 返回上次寫入指定文件或目錄的日期和時間。
GetLastWriteTimeUtc(String) 返回上次寫入指定文件或目錄的日期和時間,其格式為協(xié)調(diào)通用時 (UTC)。
GetLogicalDrives() 檢索此計算機上格式為“:\”的邏輯驅(qū)動器的名稱。
GetParent(String) 檢索指定路徑的父目錄,包括絕對路徑和相對路徑。
Move(String, String) 將文件或目錄及其內(nèi)容移到新位置。
SetAccessControl(String, DirectorySecurity) 將 DirectorySecurity 對象描述的訪問控制列表 (ACL) 項應(yīng)用于指定的目錄。
SetCreationTime(String, DateTime) 為指定的文件或目錄設(shè)置創(chuàng)建日期和時間。
SetCreationTimeUtc(String, DateTime) 設(shè)置指定文件或目錄的創(chuàng)建日期和時間,其格式為協(xié)調(diào)通用時 (UTC)。
SetCurrentDirectory(String) 將應(yīng)用程序的當前工作目錄設(shè)置為指定的目錄。
SetLastAccessTime(String, DateTime) 設(shè)置上次訪問指定文件或目錄的日期和時間。
SetLastAccessTimeUtc(String, DateTime) 設(shè)置上次訪問指定文件或目錄的日期和時間,其格式為協(xié)調(diào)通用時 (UTC)。
SetLastWriteTime(String, DateTime) 設(shè)置上次寫入目錄的日期和時間。
SetLastWriteTimeUtc(String, DateTime) 設(shè)置上次寫入某個目錄的日期和時間,其格式為協(xié)調(diào)通用時 (UTC)。
類的 Directory 靜態(tài)方法對所有方法執(zhí)行安全檢查。如果要多次重復(fù)使用對象,請考慮改用相應(yīng)的實例方法 DirectoryInfo ,因為安全檢查并不總是必要的。
如果只執(zhí)行一個與目錄相關(guān)的操作,則使用靜態(tài) Directory 方法而不是相應(yīng)的 DirectoryInfo 實例方法可能更有效。大多數(shù) Directory 方法都需要你正在操作的目錄的路徑。
備注:在接受字符串 path 參數(shù)的成員中,該路徑必須格式正確或引發(fā)異常。例如,如果路徑完全限定,但以空格 (“c:\temp”) 開頭,則不會修整路徑字符串,因此路徑被視為格式不正確,并且引發(fā)異常。此外,路徑或路徑組合不能完全限定兩次。例如,“c:\temp c:\windows”也會引發(fā)異常。使用接受路徑字符串的方法時,請確保路徑格式正確。
在接受路徑的成員中,路徑可以引用文件或目錄。可以使用服務(wù)器和共享名稱的完整路徑、相對路徑或通用命名約定 (UNC) 路徑。
默認情況下,向所有用戶授予對新目錄的完整讀/寫訪問權(quán)限。但是,應(yīng)用必須具有訪問現(xiàn)有目錄的正確安全性。
若要要求對目錄及其所有子目錄擁有權(quán)限,請使用目錄分隔符結(jié)束路徑字符串。(例如,“C:\Temp”授予對 C:\Temp\ 及其所有子目錄的訪問權(quán)限。) 若要僅要求特定目錄的權(quán)限,請使用句點結(jié)束路徑字符串。(例如“C:\Temp\”。” 僅向 C:\Temp\ 授予對其子目錄的訪問權(quán)限。)
二、DirectoryInfo 類
DirectoryInfo 類
https://docs.microsoft.com/zh-cn/dotnet/api/system.io.directoryinfo?view=netframework-4.0
1、定義
命名空間:System.IO
程序集:mscorlib.dll
繼承:Object→MarshalByRefObject→FileSystemInfo→DirectoryInfo
屬性:SerializableAttribute,ComVisibleAttribute
公開用于創(chuàng)建、移動和枚舉目錄和子目錄的實例方法。此類不能被繼承。
[System.Serializable]
[System.Runtime.InteropServices.ComVisible(true)]
public sealed class DirectoryInfo : System.IO.FileSystemInfo
使用 DirectoryInfo 類執(zhí)行典型操作,例如復(fù)制、移動、重命名、創(chuàng)建和刪除目錄。
如果要多次重用某個對象,請考慮使用的實例方法(而不是 DirectoryInfo 類的相應(yīng)靜態(tài)方法 Directory ),因為安全檢查并不總是必需的。
2、DirectoryInfo 類的構(gòu)造函數(shù)
DirectoryInfo(String) 初始化指定路徑上的 DirectoryInfo 類的新實例。
3、DirectoryInfo 類的字段
FullPath 表示目錄或文件的完全限定目錄。(繼承自 FileSystemInfo)
OriginalPath 最初由用戶指定的目錄(不論是相對目錄還是絕對目錄)。(繼承自 FileSystemInfo)
4、DirectoryInfo 類的屬性
Attributes 獲取或設(shè)置當前文件或目錄的特性。(繼承自 FileSystemInfo)
CreationTime 獲取或設(shè)置當前文件或目錄的創(chuàng)建時間。(繼承自 FileSystemInfo)
CreationTimeUtc 獲取或設(shè)置當前文件或目錄的創(chuàng)建時間,其格式為協(xié)調(diào)世界時 (UTC)。(繼承自 FileSystemInfo)
Exists 獲取指示目錄是否存在的值。
Extension 獲取文件名的擴展名部分,包括前導(dǎo)點 。即使它是整個文件名,或者不存在擴展名的空字符串。(繼承自 FileSystemInfo)
FullName 獲取目錄或文件的完整目錄。(繼承自 FileSystemInfo)
LastAccessTime 獲取或設(shè)置上次訪問當前文件或目錄的時間。(繼承自 FileSystemInfo)
LastAccessTimeUtc 獲取或設(shè)置上次訪問當前文件或目錄的時間,其格式為協(xié)調(diào)世界時 (UTC)。(繼承自 FileSystemInfo)
LastWriteTime 獲取或設(shè)置上次寫入當前文件或目錄的時間。(繼承自 FileSystemInfo)
LastWriteTimeUtc 獲取或設(shè)置上次寫入當前文件或目錄的時間,其格式為協(xié)調(diào)世界時 (UTC)。(繼承自 FileSystemInfo)
LinkTarget 獲取位于其中 FullName的鏈接的目標路徑,或者 null 如果此 FileSystemInfo 實例不表示鏈接。(繼承自 FileSystemInfo)
Name 獲取此 DirectoryInfo 實例的名稱。
Parent 獲取指定的子目錄的父目錄。
Root 獲取目錄的根部分。
UnixFileMode 獲取或設(shè)置當前文件或目錄的 Unix 文件模式。(繼承自 FileSystemInfo)
5、DirectoryInfo 類的方法
Create() 創(chuàng)建目錄。
Create(DirectorySecurity) 使用 DirectorySecurity 對象創(chuàng)建目錄。
CreateAsSymbolicLink(String) 創(chuàng)建指向指定pathToTarget位置的符號鏈接FullName。(繼承自 FileSystemInfo)
CreateObjRef(Type) 創(chuàng)建一個對象,該對象包含生成用于與遠程對象進行通信的代理所需的全部相關(guān)信息。(繼承自 MarshalByRefObject)
CreateSubdirectory(String) 在指定路徑上創(chuàng)建一個或多個子目錄。指定路徑可以是相對于 DirectoryInfo 類的此實例的路徑。
CreateSubdirectory(String, DirectorySecurity) 使用指定的安全性在指定的路徑上創(chuàng)建一個或多個子目錄。指定路徑可以是相對于 DirectoryInfo 類的此實例的路徑。
Delete() 如果此 DirectoryInfo 為空則將其刪除。
Delete(Boolean) 刪除 DirectoryInfo 的此實例,指定是否刪除子目錄和文件。
EnumerateDirectories() 返回當前目錄中的目錄信息的可枚舉集合。
EnumerateDirectories(String) 返回與指定的搜索模式匹配的目錄信息的可枚舉集合。
EnumerateDirectories(String, SearchOption) 返回與指定的搜索模式和搜索子目錄選項匹配的目錄信息的可枚舉集合。
EnumerateFiles() 返回當前目錄中的文件信息的可枚舉集合。
EnumerateFiles(String) 返回與搜索模式匹配的文件信息的可枚舉集合。
EnumerateFiles(String, SearchOption) 返回與指定的搜索模式和搜索子目錄選項匹配的文件信息的可枚舉集合。
EnumerateFileSystemInfos() 返回當前目錄中的文件系統(tǒng)信息的可枚舉集合。
EnumerateFileSystemInfos(String) 返回與指定的搜索模式匹配的文件系統(tǒng)信息的可枚舉集合。
EnumerateFileSystemInfos(String, SearchOption) 返回與指定的搜索模式和搜索子目錄選項匹配的文件系統(tǒng)信息的可枚舉集合。
Equals(Object) 確定指定對象是否等于當前對象。(繼承自 Object)
GetAccessControl() 獲取 DirectorySecurity 對象,該對象封裝當前 DirectoryInfo 對象所描述的目錄的訪問控制列表 (ACL) 項。
GetAccessControl(AccessControlSections) 獲取 DirectorySecurity 對象,該對象封裝當前 DirectoryInfo 對象所描述的目錄的指定類型的訪問控制列表 (ACL) 項。
GetDirectories() 返回當前目錄的子目錄。
GetDirectories(String) 返回當前 DirectoryInfo 中、與給定搜索條件匹配的目錄的數(shù)組。
GetDirectories(String, SearchOption) 返回當前 DirectoryInfo 中與給定的搜索條件匹配并使用某個值確定是否在子目錄中搜索的目錄的數(shù)組。
GetFiles() 返回當前目錄的文件列表。
GetFiles(String) 返回當前目錄中與給定的搜索模式匹配的文件列表。
GetFiles(String, SearchOption) 返回與給定的搜索模式匹配并且使用某個值確定是否在子目錄中進行搜索的當前目錄的文件列表。
GetFileSystemInfos() 返回表示某個目錄中所有文件和子目錄的強類型 FileSystemInfo 項的數(shù)組。
GetFileSystemInfos(String) 檢索表示與指定的搜索條件匹配的文件和子目錄的強類型 FileSystemInfo 對象的數(shù)組。
GetFileSystemInfos(String, SearchOption) 檢索表示與指定的搜索條件匹配的文件和子目錄的 FileSystemInfo 對象的數(shù)組。
GetHashCode() 作為默認哈希函數(shù)。(繼承自 Object)
GetLifetimeService() 檢索控制此實例的生存期策略的當前生存期服務(wù)對象。(繼承自 MarshalByRefObject)
GetObjectData(SerializationInfo, StreamingContext) 設(shè)置帶有文件名和附加異常信息的 SerializationInfo 對象。(繼承自 FileSystemInfo)
GetType() 獲取當前實例的 Type。(繼承自 Object)
InitializeLifetimeService() 獲取生存期服務(wù)對象來控制此實例的生存期策略。(繼承自 MarshalByRefObject)
MemberwiseClone() 創(chuàng)建當前 Object 的淺表副本。(繼承自 Object)
MemberwiseClone(Boolean) 創(chuàng)建當前 MarshalByRefObject 對象的淺表副本。(繼承自 MarshalByRefObject)
MoveTo(String) 將 DirectoryInfo 實例及其內(nèi)容移動到新路徑。
Refresh() 刷新對象的狀態(tài)。(繼承自 FileSystemInfo)
ResolveLinkTarget(Boolean) 獲取指定鏈接的目標。(繼承自 FileSystemInfo)
SetAccessControl(DirectorySecurity) 將 DirectorySecurity 對象所描述的訪問控制列表 (ACL) 項應(yīng)用于當前 DirectoryInfo 對象所描述的目錄。
ToString() 返回傳遞給 DirectoryInfo 構(gòu)造函數(shù)的原始路徑。使用 FullName 或 Name 屬性作為完整路徑或文件/目錄名,而不是此方法。
備注:Directory類與DirectoryInfo類基本相同,但DirectoryInfo 類能建立對象。如果執(zhí)行單一調(diào)用就使用Directory類,如果執(zhí)行一系列調(diào)用,就使用實例化的DirectoryInfo的對象
三、示例
1、判斷文件夾是否存在
using System;
using System.IO;
namespace _20220831_1
{
class Program
{
static void Main(string[] args)
{
//Directory類的Exists方法
bool a1 = Directory.Exists("C:\\Program Files");
Console.WriteLine(a1);
//DirectoryInfo類的Exists屬性
DirectoryInfo a2 = new DirectoryInfo("C:\\Program Files");
if(a2.Exists)
{
Console.WriteLine("此文件夾存在");
}
else
{
Console.WriteLine("此文件夾不存在");
}
}
}
}
2、創(chuàng)建文件夾
using System;
using System.IO;
namespace _20220831_1
{
class Program
{
static void Main(string[] args)
{
//Directory類的CreateDirectory方法
Directory.CreateDirectory("d:\\新建文件夾(1)");
//DirectoryInfo類的Create方法
DirectoryInfo x1 = new DirectoryInfo("d:\\新建文件夾(2)");
x1.Create();
}
}
}
3、移動文件夾
using System;
using System.IO;
namespace _20220831_1
{
class Program
{
static void Main(string[] args)
{
//Directory類的Move方法
Directory.Move("d:\\新建文件夾(1)", "c:\\新建文件夾(1)");
//DirectoryInfo類的MoveTo方法
DirectoryInfo x1 = new DirectoryInfo("d:\\新建文件夾(2)");
x1.MoveTo("c:\\新建文件夾(2)");
}
}
}
4、刪除文件夾
using System;
using System.IO;
namespace _20220831_1
{
class Program
{
static void Main(string[] args)
{
//Directory類的Delete方法
Directory.Delete("d:\\新建文件夾(1)");
//DirectoryInfo類的Delete方法
DirectoryInfo x1 = new DirectoryInfo("d:\\新建文件夾(2)");
x1.Delete();
}
}
}
四、遍歷文件夾
在遍歷文件夾時,可以分別使用DirectoryInfo類提供的GetDirectories方法、GetFiles方法、GetFileSystemInfos方法來實現(xiàn)。
備注:一般在遍歷文件夾時會使用GetFileSystemInfos方法,因為GetDirectories方法只遍歷文件夾中的子文件夾,GetFiles方法方法只遍歷文件夾中的文件,而GetFileSystemInfos方法遍歷文件夾中國所有的子文件夾和文件。
1、DirectoryInfo.GetDirectories方法?
重載
GetDirectories() 返回當前目錄的子目錄。
GetDirectories(String) 返回當前 DirectoryInfo 中、與給定搜索條件匹配的目錄的數(shù)組。
GetDirectories(String, SearchOption) 返回當前 DirectoryInfo 中與給定的搜索條件匹配并使用某個值確定是否在子目錄中搜索的目錄的數(shù)組。
GetDirectories()
返回當前目錄的子目錄。
public System.IO.DirectoryInfo[] GetDirectories ();
參數(shù):
(返回值)DirectoryInfo[]:一個 DirectoryInfo 對象數(shù)組。
GetDirectories(String)
返回當前 DirectoryInfo 中、與給定搜索條件匹配的目錄的數(shù)組。
public System.IO.DirectoryInfo[] GetDirectories (string searchPattern);
參數(shù):
searchPattern:要與目錄名匹配的搜索字符串。此參數(shù)可以包含有效文本路徑和通配符( 和 ?)的組合,但不支持正則表達式。*
(返回值)DirectoryInfo[]:與 DirectoryInfo 匹配的 searchPattern 類型的數(shù)組。
GetDirectories(String, SearchOption)
返回當前 DirectoryInfo 中與給定的搜索條件匹配并使用某個值確定是否在子目錄中搜索的目錄的數(shù)組。
public System.IO.DirectoryInfo[] GetDirectories (string searchPattern, System.IO.SearchOption searchOption);
參數(shù):
searchPattern:要與目錄名匹配的搜索字符串。此參數(shù)可以包含有效文本路徑和通配符( 和 ?)的組合,但不支持正則表達式。
searchOption:用于指定搜索操作是應(yīng)僅包含當前目錄還是應(yīng)包含所有子目錄的枚舉值之一。
(返回值)DirectoryInfo[]:與 DirectoryInfo 匹配的 searchPattern 類型的數(shù)組。
GetDirectories()案例*
using System;
using System.IO;
namespace _20220901_1
{
class Program
{
static void Main(string[] args)
{
// 引用一個目錄。
DirectoryInfo di = new DirectoryInfo("c:\\");
// 獲取對該目錄中每個目錄的引用。
DirectoryInfo[] diArr = di.GetDirectories();
// 顯示目錄的名稱。
foreach (DirectoryInfo dri in diArr)
Console.WriteLine(dri.Name);
}
}
}
GetDirectories(String) 案例
using System;
using System.IO;
namespace _20220901_1
{
class Program
{
static void Main(string[] args)
{
try
{
DirectoryInfo di = new DirectoryInfo(@"D:\Documents\Desktop");
DirectoryInfo[] dirs = di.GetDirectories("*p*");
Console.WriteLine("此目錄中包含字母p的文件夾數(shù)量為 {0}個。\n", dirs.Length);
foreach (DirectoryInfo diNext in dirs)
{
Console.WriteLine("名為 {0} 的文件夾內(nèi)有{1}個文件", diNext,diNext.GetFiles().Length);
}
}
catch (Exception e)
{
Console.WriteLine("“這個過程失敗: {0}", e.ToString());
}
}
}
}
GetDirectories(String, SearchOption) 案例
using System;
using System.IO;
namespace _2024
{
class Program
{
static void Main(string[] args)
{
string path = @"c:\";
string searchPattern = "c*";
DirectoryInfo di = new DirectoryInfo(path);
DirectoryInfo[] directories =di.GetDirectories(searchPattern, SearchOption.TopDirectoryOnly);
FileInfo[] files =di.GetFiles(searchPattern, SearchOption.TopDirectoryOnly);
Console.WriteLine("在{0}目錄中,以字母\"c\"開頭的文件有:", path);
foreach (DirectoryInfo dir in directories)
{
Console.WriteLine("{0,-25} {1,25}", dir.FullName, dir.LastWriteTime);
}
Console.WriteLine();
Console.WriteLine("在{0}目錄中,以字母\"c\" 開頭的文件: ", path);
foreach (FileInfo file in files)
{
Console.WriteLine("{0,-25} {1,25}", file.Name, file.LastWriteTime);
}
}
}
}
2、DirectoryInfo.GetFiles 方法
重載
GetFiles(String, SearchOption) 返回與給定的搜索模式匹配并且使用某個值確定是否在子目錄中進行搜索的當前目錄的文件列表。
GetFiles() 返回當前目錄的文件列表。
GetFiles(String) 返回當前目錄中與給定的搜索模式匹配的文件列表。
GetFiles(String, SearchOption)
返回與給定的搜索模式匹配并且使用某個值確定是否在子目錄中進行搜索的當前目錄的文件列表。
public System.IO.FileInfo[] GetFiles (string searchPattern, System.IO.SearchOption searchOption);
參數(shù):
searchPattern:要與文件名匹配的搜索字符串。此參數(shù)可以包含有效文本路徑和通配符(* 和 ?)的組合,但不支持正則表達式。
searchOption:用于指定搜索操作是應(yīng)僅包含當前目錄還是應(yīng)包含所有子目錄的枚舉值之一。
(返回值)FileInfo[]:FileInfo 類型的數(shù)組。
GetFiles()
返回當前目錄的文件列表。
public System.IO.FileInfo[] GetFiles ();
參數(shù):
(返回值)FileInfo[]:FileInfo 類型的數(shù)組。
GetFiles(String)
返回當前目錄中與給定的搜索模式匹配的文件列表。
public System.IO.FileInfo[] GetFiles (string searchPattern);
參數(shù):
searchPattern:要與文件名匹配的搜索字符串。此參數(shù)可以包含有效文本路徑和通配符(* 和 ?)的組合,但不支持正則表達式。
(返回值)FileInfo[]:FileInfo 類型的數(shù)組。
3、DirectoryInfo.GetFileSystemInfos 方法
重載?
GetFileSystemInfos() 返回表示某個目錄中所有文件和子目錄的強類型 FileSystemInfo 項的數(shù)組。
GetFileSystemInfos(String) 檢索表示與指定的搜索條件匹配的文件和子目錄的強類型 FileSystemInfo 對象的數(shù)組。
GetFileSystemInfos(String, SearchOption) 檢索表示與指定的搜索條件匹配的文件和子目錄的 FileSystemInfo 對象的數(shù)組。
GetFileSystemInfos()
返回表示某個目錄中所有文件和子目錄的強類型 FileSystemInfo 項的數(shù)組。
public System.IO.FileSystemInfo[] GetFileSystemInfos ();
參數(shù):
(返回值)FileSystemInfo[]:強類型 FileSystemInfo 項的數(shù)組。
GetFileSystemInfos(String)
檢索表示與指定的搜索條件匹配的文件和子目錄的強類型 FileSystemInfo 對象的數(shù)組。
public System.IO.FileSystemInfo[] GetFileSystemInfos (string searchPattern);
參數(shù):
searchPattern:要與目錄和文件的名稱匹配的搜索字符串。此參數(shù)可以包含有效文本路徑和通配符(* 和 ?)的組合,但不支持正則表達式。
(返回值)FileSystemInfo[]:與搜索條件匹配的強類型 FileSystemInfo 對象的數(shù)組。
GetFileSystemInfos(String, SearchOption)
檢索表示與指定的搜索條件匹配的文件和子目錄的 FileSystemInfo 對象的數(shù)組。
public System.IO.FileSystemInfo[] GetFileSystemInfos (string searchPattern, System.IO.SearchOption searchOption);
參數(shù):
searchPattern:要與目錄和文件的名稱匹配的搜索字符串。此參數(shù)可以包含有效文本路徑和通配符(* 和 ?)的組合,但不支持正則表達式。
searchOption:用于指定搜索操作是應(yīng)僅包含當前目錄還是應(yīng)包含所有子目錄的枚舉值之一。默認值是 TopDirectoryOnly。
(返回值)FileSystemInfo[]:與搜索條件匹配的文件系統(tǒng)項的數(shù)組。
五、案例
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
namespace _20220726_1
{
class Program
{
static void Main(string[] args)
{
//一、在d盤下創(chuàng)建一個01文件夾(如果有,不會替換)
Directory.CreateDirectory("d:/01");
//二、獲取此目錄下jpg后綴的文件,并將名稱顯示出來
string[] path1 = Directory.GetFiles(@"D:\迅雷下載", "*.jpg");
for (int i = 0; i < path1.Length; i++)
{
Console.WriteLine(path1[i]);
}
//三、獲取指定目錄下所有文件夾的全路徑
string[] path2=Directory.GetDirectories(@"D:\迅雷下載");
for (int j = 0; j < path2.Length; j++)
{
Console.WriteLine(path2[j]);
}
//四、創(chuàng)建文件夾
if (Directory.Exists(@"D:/01/02/"))//在目錄后面一定要加/,不然命名會出錯
//如果沒有此目錄,不會自動添加,更不會執(zhí)行后續(xù)步驟
{
for(int k = 0; k < 100; k++)
{
Directory.CreateDirectory(@"D:/01/02/" + k);
}
}
Console.WriteLine("ok");
Console.ReadKey();
//五、刪除文件夾
Directory.Delete(@"D:/01/02",true);
Console.ReadKey();
}
}
}
六、案例
using System;
using System.IO;
using System.Windows.Forms;
namespace Demo
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
listView1.Items.Clear();
if (folderBrowserDialog1.ShowDialog() == DialogResult.OK)
{
textBox1.Text = folderBrowserDialog1.SelectedPath;//將選擇的文件夾的路徑 放到文本框中
DirectoryInfo df1 = new DirectoryInfo(textBox1.Text);//實例化DirectoryInfo對象
FileSystemInfo[] arr1 = df1.GetFileSystemInfos();//獲取指定目錄下的所有子目錄及文件類型
foreach (FileSystemInfo arr2 in arr1)
{
if (arr2 is DirectoryInfo)//判斷是否文件夾
{
DirectoryInfo x1 = new DirectoryInfo(arr2.FullName);//使用獲取的文件夾名稱實例化DirectoryInfo對象
//________________________________方法1___________________________________
ListViewItem lvt1 = new ListViewItem();
lvt1.Text = x1.Name;//文件夾的名字
lvt1.SubItems.Add(x1.FullName);//文件夾的路徑
lvt1.SubItems.Add("");//文件夾沒有大小
lvt1.SubItems.Add(x1.CreationTime.ToShortDateString());
this.listView1.Items.Add(lvt1);
//________________________________方法2___________________________________//為ListView控件添加文件夾信息
//listView1.Items.Add(x1.Name);
//listView1.Items[listView1.Items.Count - 1].SubItems.Add(x1.FullName);
//listView1.Items[listView1.Items.Count - 1].SubItems.Add("");
//listView1.Items[listView1.Items.Count - 1].SubItems.Add(x1.CreationTime.ToShortDateString());
}
else
{
//使用獲取的文件名稱實例化FileInfo對象
FileInfo x2 = new FileInfo(arr2.FullName);
//為ListView控件添加文件信息
listView1.Items.Add(x2.Name);
listView1.Items[listView1.Items.Count - 1].SubItems.Add(x2.FullName);
listView1.Items[listView1.Items.Count - 1].SubItems.Add(x2.Length.ToString());
listView1.Items[listView1.Items.Count - 1].SubItems.Add(x2.CreationTime.ToShortDateString());
}
}
}
}
}
}
該文章在 2024/12/4 16:50:03 編輯過