DirectoryInfo.GetFileSystemInfos 方法
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
擷取強型別 FileSystemInfo 物件的陣列,表示目前目錄的檔案和子目錄。
多載
GetFileSystemInfos() |
傳回強型別 FileSystemInfo 項目的陣列,表示目錄中的所有檔案和子目錄。 |
GetFileSystemInfos(String) |
擷取強型別 FileSystemInfo 物件的陣列,表示符合指定之搜尋準則的檔案和子目錄。 |
GetFileSystemInfos(String, EnumerationOptions) |
擷取代表符合所指定搜尋模式和列舉選項之檔案和子目錄的強型別 FileSystemInfo 物件陣列。 |
GetFileSystemInfos(String, SearchOption) |
擷取 FileSystemInfo 物件的陣列,表示符合指定之搜尋準則的檔案和子目錄。 |
GetFileSystemInfos()
傳回強型別 FileSystemInfo 項目的陣列,表示目錄中的所有檔案和子目錄。
public:
cli::array <System::IO::FileSystemInfo ^> ^ GetFileSystemInfos();
public System.IO.FileSystemInfo[] GetFileSystemInfos ();
member this.GetFileSystemInfos : unit -> System.IO.FileSystemInfo[]
Public Function GetFileSystemInfos () As FileSystemInfo()
傳回
強類型 (Strongly Typed) FileSystemInfo 項目的陣列。
例外狀況
路徑無效 (例如,它位於未對應的磁碟機上)。
範例
下列範例會計算指定目錄下的檔案和目錄。
using System;
using System.IO;
class DirectoryFileCount
{
static long files = 0;
static long directories = 0;
static void Main()
{
try
{
Console.WriteLine("Enter the path to a directory:");
string directory = Console.ReadLine();
// Create a new DirectoryInfo object.
DirectoryInfo dir = new DirectoryInfo(directory);
if (!dir.Exists)
{
throw new DirectoryNotFoundException("The directory does not exist.");
}
// Call the GetFileSystemInfos method.
FileSystemInfo[] infos = dir.GetFileSystemInfos();
Console.WriteLine("Working...");
// Pass the result to the ListDirectoriesAndFiles
// method defined below.
ListDirectoriesAndFiles(infos);
// Display the results to the console.
Console.WriteLine("Directories: {0}", directories);
Console.WriteLine("Files: {0}", files);
}
catch (Exception e)
{
Console.WriteLine(e.Message);
}
finally
{
Console.ReadLine();
}
}
static void ListDirectoriesAndFiles(FileSystemInfo[] FSInfo)
{
// Check the FSInfo parameter.
if (FSInfo == null)
{
throw new ArgumentNullException("FSInfo");
}
// Iterate through each item.
foreach (FileSystemInfo i in FSInfo)
{
// Check to see if this is a DirectoryInfo object.
if (i is DirectoryInfo)
{
// Add one to the directory count.
directories++;
// Cast the object to a DirectoryInfo object.
DirectoryInfo dInfo = (DirectoryInfo)i;
// Iterate through all sub-directories.
ListDirectoriesAndFiles(dInfo.GetFileSystemInfos());
}
// Check to see if this is a FileInfo object.
else if (i is FileInfo)
{
// Add one to the file count.
files++;
}
}
}
}
open System.IO
let mutable files = 0
let mutable directories = 0
let rec listDirectoriesAndFiles (fsInfo: FileSystemInfo[]) =
// Check the FSInfo parameter.
if fsInfo = null then
nullArg "fsInfo"
// Iterate through each item.
for i in fsInfo do
// Check to see if this is a DirectoryInfo object.
match i with
| :? DirectoryInfo as dInfo ->
// Add one to the directory count.
directories <- directories + 1
// Iterate through all sub-directories.
listDirectoriesAndFiles (dInfo.GetFileSystemInfos())
// Check to see if this is a FileInfo object.
| :? FileInfo ->
// Add one to the file count.
files <- files + 1
| _ -> ()
try
printfn "Enter the path to a directory:"
let directory = stdin.ReadLine()
// Create a new DirectoryInfo object.
let dir = DirectoryInfo directory
if not dir.Exists then
raise (DirectoryNotFoundException "The directory does not exist.")
// Call the GetFileSystemInfos method.
let infos = dir.GetFileSystemInfos()
printfn "Working..."
// Pass the result to the ListDirectoriesAndFiles
// method defined below.
listDirectoriesAndFiles infos
// Display the results to the console.
printfn $"Directories: {directories}"
printfn $"Files: {files}"
with e ->
printfn $"{e.Message}"
Imports System.IO
Module DirectoryFileCount
Dim files As Long = 0
Dim directories As Long = 0
Sub Main()
Try
Console.WriteLine("Enter the path to a directory:")
Dim directory As String = Console.ReadLine()
' Create a new DirectoryInfo object.
Dim dir As New DirectoryInfo(directory)
If Not dir.Exists Then
Throw New DirectoryNotFoundException("The directory does not exist.")
End If
' Call the GetFileSystemInfos method.
Dim infos As FileSystemInfo() = dir.GetFileSystemInfos()
Console.WriteLine("Working...")
' Pass the result to the ListDirectoriesAndFiles
' method defined below.
ListDirectoriesAndFiles(infos)
' Display the results to the console.
Console.WriteLine("Directories: {0}", directories)
Console.WriteLine("Files: {0}", files)
Catch e As Exception
Console.WriteLine(e.Message)
Finally
Console.ReadLine()
End Try
End Sub
Sub ListDirectoriesAndFiles(ByVal FSInfo() As FileSystemInfo)
' Check the FSInfo parameter.
If FSInfo Is Nothing Then
Throw New ArgumentNullException("FSInfo")
End If
' Iterate through each item.
Dim i As FileSystemInfo
For Each i In FSInfo
' Check to see if this is a DirectoryInfo object.
If TypeOf i Is DirectoryInfo Then
' Add one to the directory count.
directories += 1
' Cast the object to a DirectoryInfo object.
Dim dInfo As DirectoryInfo = CType(i, DirectoryInfo)
' Iterate through all sub-directories.
ListDirectoriesAndFiles(dInfo.GetFileSystemInfos())
' Check to see if this is a FileInfo object.
ElseIf TypeOf i Is FileInfo Then
' Add one to the file count.
files += 1
End If
Next i
End Sub
End Module
備註
如果 中 DirectoryInfo沒有檔案或目錄,這個方法會傳回空陣列。 這個方法不是遞歸的。
對於子目錄, FileSystemInfo 這個方法所傳回的物件可以轉換成衍生類別 DirectoryInfo。 FileAttributes使用屬性所FileSystemInfo.Attributes傳回的值來判斷 是否FileSystemInfo代表檔案或目錄。
這個方法會預先填入下列 FileSystemInfo 屬性的值:
另請參閱
適用於
GetFileSystemInfos(String)
擷取強型別 FileSystemInfo 物件的陣列,表示符合指定之搜尋準則的檔案和子目錄。
public:
cli::array <System::IO::FileSystemInfo ^> ^ GetFileSystemInfos(System::String ^ searchPattern);
public System.IO.FileSystemInfo[] GetFileSystemInfos (string searchPattern);
member this.GetFileSystemInfos : string -> System.IO.FileSystemInfo[]
Public Function GetFileSystemInfos (searchPattern As String) As FileSystemInfo()
參數
- searchPattern
- String
要比對目錄及檔案名稱的搜尋字串。 這個參數可以包含有效常值路徑與萬用 (* 和 ?) 字元的組合,但是不支援規則運算式。
傳回
強類型 FileSystemInfo
物件的陣列,符合搜尋準則。
例外狀況
.NET Framework 和 2.1 之前的 .NET Core 版本:searchPattern
包含 方法所GetInvalidPathChars()定義的一或多個無效字元。
searchPattern
為 null
。
指定的路徑無效 (例如,它位於未對應的磁碟機上)。
呼叫端沒有必要的權限。
範例
下列範例會計算符合指定搜尋模式的檔案和目錄。
using System;
using System.IO;
class DirectoryFileCount
{
static long files = 0;
static long directories = 0;
static void Main()
{
try
{
Console.WriteLine("Enter the path to a directory:");
string directory = Console.ReadLine();
Console.WriteLine("Enter a search string (for example *p*):");
string searchString = Console.ReadLine();
// Create a new DirectoryInfo object.
DirectoryInfo dir = new DirectoryInfo(directory);
if (!dir.Exists)
{
throw new DirectoryNotFoundException("The directory does not exist.");
}
// Call the GetFileSystemInfos method.
FileSystemInfo[] infos = dir.GetFileSystemInfos(searchString);
Console.WriteLine("Working...");
// Pass the result to the ListDirectoriesAndFiles
// method defined below.
ListDirectoriesAndFiles(infos, searchString);
// Display the results to the console.
Console.WriteLine("Directories: {0}", directories);
Console.WriteLine("Files: {0}", files);
}
catch (Exception e)
{
Console.WriteLine(e.Message);
}
finally
{
Console.ReadLine();
}
}
static void ListDirectoriesAndFiles(FileSystemInfo[] FSInfo, string SearchString)
{
// Check the parameters.
if (FSInfo == null)
{
throw new ArgumentNullException("FSInfo");
}
if (SearchString == null || SearchString.Length == 0)
{
throw new ArgumentNullException("SearchString");
}
// Iterate through each item.
foreach (FileSystemInfo i in FSInfo)
{
// Check to see if this is a DirectoryInfo object.
if (i is DirectoryInfo)
{
// Add one to the directory count.
directories++;
// Cast the object to a DirectoryInfo object.
DirectoryInfo dInfo = (DirectoryInfo)i;
// Iterate through all sub-directories.
ListDirectoriesAndFiles(dInfo.GetFileSystemInfos(SearchString), SearchString);
}
// Check to see if this is a FileInfo object.
else if (i is FileInfo)
{
// Add one to the file count.
files++;
}
}
}
}
open System
open System.IO
let mutable files = 0
let mutable directories = 0
let rec listDirectoriesAndFiles (fsInfo: FileSystemInfo[]) searchString =
// Check the parameters.
if fsInfo = null then
nullArg "fsInfo"
if String.IsNullOrEmpty searchString then
invalidArg "searchString" "Search string cannot be empty."
// Iterate through each item.
for i in fsInfo do
// Check to see if this is a DirectoryInfo object.
match i with
| :? DirectoryInfo as dInfo ->
// Add one to the directory count.
directories <- directories + 1
// Iterate through all sub-directories.
listDirectoriesAndFiles (dInfo.GetFileSystemInfos searchString) searchString
// Check to see if this is a FileInfo object.
| :? FileInfo ->
// Add one to the file count.
files <- files + 1
| _ -> ()
try
printfn "Enter the path to a directory:"
let directory = stdin.ReadLine()
printfn "Enter a search string (for example *p*):"
let searchString = stdin.ReadLine()
// Create a new DirectoryInfo object.
let dir = DirectoryInfo directory
if not dir.Exists then
raise (DirectoryNotFoundException "The directory does not exist.")
// Call the GetFileSystemInfos method.
let infos = dir.GetFileSystemInfos searchString
printfn "Working..."
// Pass the result to the ListDirectoriesAndFiles
// method defined below.
listDirectoriesAndFiles infos searchString
// Display the results to the console.
printfn $"Directories: {directories}"
printfn $"Files: {files}"
with e ->
printfn $"{e.Message}"
Imports System.IO
Module DirectoryFileCount
Dim files As Long = 0
Dim directories As Long = 0
Sub Main()
Try
Console.WriteLine("Enter the path to a directory:")
Dim directory As String = Console.ReadLine()
Console.WriteLine("Enter a search string (for example *p*):")
Dim searchString As String = Console.ReadLine()
' Create a new DirectoryInfo object.
Dim dir As New DirectoryInfo(directory)
If Not dir.Exists Then
Throw New DirectoryNotFoundException("The directory does not exist.")
End If
' Call the GetFileSystemInfos method.
Dim infos As FileSystemInfo() = dir.GetFileSystemInfos(searchString)
Console.WriteLine("Working...")
' Pass the result to the ListDirectoriesAndFiles
' method defined below.
ListDirectoriesAndFiles(infos, searchString)
' Display the results to the console.
Console.WriteLine("Directories: {0}", directories)
Console.WriteLine("Files: {0}", files)
Catch e As Exception
Console.WriteLine(e.Message)
Finally
Console.ReadLine()
End Try
End Sub
Sub ListDirectoriesAndFiles(ByVal FSInfo() As FileSystemInfo, ByVal SearchString As String)
' Check the parameters.
If FSInfo Is Nothing Then
Throw New ArgumentNullException("FSInfo")
End If
If SearchString Is Nothing OrElse SearchString.Length = 0 Then
Throw New ArgumentNullException("SearchString")
End If
' Iterate through each item.
Dim i As FileSystemInfo
For Each i In FSInfo
' Check to see if this is a DirectoryInfo object.
If TypeOf i Is DirectoryInfo Then
' Add one to the directory count.
directories += 1
' Cast the object to a DirectoryInfo object.
Dim dInfo As DirectoryInfo = CType(i, DirectoryInfo)
' Iterate through all sub-directories.
ListDirectoriesAndFiles(dInfo.GetFileSystemInfos(SearchString), SearchString)
' Check to see if this is a FileInfo object.
ElseIf TypeOf i Is FileInfo Then
' Add one to the file count.
files += 1
End If
Next i
End Sub
End Module
備註
searchPattern
可以是常值和通配符的組合,但不支援正則表達式。 在中 searchPattern
允許下列通配符規範。
通配符規範 | 相符項 |
---|---|
* (星號) | 該位置中的零或多個字元。 |
? (問號) | 該位置中的零或一個字元。 |
通配符以外的字元是常值字元。 例如,字串 「*t」 會搜尋以字母 「t」 結尾的所有名稱。 ". 字串 searchPattern
“s*” 會搜尋以字母 “s” 開頭的所有名稱 path
。
這個方法不是遞歸的。
對於子目錄, FileSystemInfo 這個方法所傳回的物件可以轉換成衍生類別 DirectoryInfo。 FileAttributes使用屬性所FileSystemInfo.Attributes傳回的值來判斷 是否FileSystemInfo代表檔案或目錄。
允許通配符。 例如, searchPattern
字串 「*t」 會搜尋以字母 「t」 結尾的所有目錄名稱 path
。 字串 searchPattern
“s*” 會搜尋以字母 “s” 開頭的所有目錄名稱 path
。
只有在字串 「..」 指定為有效目錄名稱的一部分時,才能在 中使用 searchPattern
,例如在目錄名稱 「a.. 中。b". 它不能用來向上移動目錄階層。 如果沒有檔案或目錄,或沒有符合 searchPattern
中字串的 DirectoryInfo檔案或目錄,這個方法會傳回空陣列。
這個方法會預先填入下列 FileSystemInfo 屬性的值:
另請參閱
適用於
GetFileSystemInfos(String, EnumerationOptions)
擷取代表符合所指定搜尋模式和列舉選項之檔案和子目錄的強型別 FileSystemInfo 物件陣列。
public:
cli::array <System::IO::FileSystemInfo ^> ^ GetFileSystemInfos(System::String ^ searchPattern, System::IO::EnumerationOptions ^ enumerationOptions);
public System.IO.FileSystemInfo[] GetFileSystemInfos (string searchPattern, System.IO.EnumerationOptions enumerationOptions);
member this.GetFileSystemInfos : string * System.IO.EnumerationOptions -> System.IO.FileSystemInfo[]
Public Function GetFileSystemInfos (searchPattern As String, enumerationOptions As EnumerationOptions) As FileSystemInfo()
參數
- searchPattern
- String
要比對目錄及檔案名稱的搜尋字串。 這個參數可以包含有效常值路徑與萬用 (* 和 ?) 字元的組合,但是不支援規則運算式。
- enumerationOptions
- EnumerationOptions
物件,描述要使用的搜尋和列舉組態。
傳回
符合 searchPattern
和 enumerationOptions
的強型別 FileSystemInfo
物件陣列。
例外狀況
.NET Framework 和 2.1 之前的 .NET Core 版本:searchPattern
包含 方法所GetInvalidPathChars()定義的一或多個無效字元。
searchPattern
為 null
。
指定的路徑無效 (例如,它位於未對應的磁碟機上)。
呼叫端沒有必要的權限。
備註
searchPattern
可以是常值和通配符的組合,但不支援正則表達式。 在中 searchPattern
允許下列通配符規範。
通配符規範 | 相符項 |
---|---|
* (星號) | 該位置中的零或多個字元。 |
? (問號) | 該位置中的零或一個字元。 |
通配符以外的字元是常值字元。 例如,字串 「*t」 會搜尋以字母 「t」 結尾的所有名稱。 ". 字串 searchPattern
“s*” 會搜尋以字母 “s” 開頭的所有名稱 path
。
這個方法不是遞歸的。
對於子目錄, FileSystemInfo 這個方法所傳回的物件可以轉換成衍生類別 DirectoryInfo。 FileAttributes使用屬性所FileSystemInfo.Attributes傳回的值來判斷 是否FileSystemInfo代表檔案或目錄。
允許通配符。 例如, searchPattern
字串 「*t」 會搜尋以字母 「t」 結尾的所有目錄名稱 path
。 字串 searchPattern
“s*” 會搜尋以字母 “s” 開頭的所有目錄名稱 path
。
只有在字串 「..」 指定為有效目錄名稱的一部分時,才能在 中使用 searchPattern
,例如在目錄名稱 「a.. 中。b". 它不能用來向上移動目錄階層。 如果沒有檔案或目錄,或沒有符合 searchPattern
中字串的 DirectoryInfo檔案或目錄,這個方法會傳回空陣列。
這個方法會預先填入下列 FileSystemInfo 屬性的值:
適用於
GetFileSystemInfos(String, SearchOption)
擷取 FileSystemInfo 物件的陣列,表示符合指定之搜尋準則的檔案和子目錄。
public:
cli::array <System::IO::FileSystemInfo ^> ^ GetFileSystemInfos(System::String ^ searchPattern, System::IO::SearchOption searchOption);
public System.IO.FileSystemInfo[] GetFileSystemInfos (string searchPattern, System.IO.SearchOption searchOption);
member this.GetFileSystemInfos : string * System.IO.SearchOption -> System.IO.FileSystemInfo[]
Public Function GetFileSystemInfos (searchPattern As String, searchOption As SearchOption) As FileSystemInfo()
參數
- searchPattern
- String
要比對目錄及檔案名稱的搜尋字串。 這個參數可以包含有效常值路徑與萬用 (* 和 ?) 字元的組合,但是不支援規則運算式。
- searchOption
- SearchOption
其中一個列舉值,指定搜尋作業應該只包含目前目錄還是包含所有子目錄。 預設值是 TopDirectoryOnly。
傳回
陣列,包含符合搜尋準則的檔案系統項目。
例外狀況
.NET Framework 和 2.1 之前的 .NET Core 版本:searchPattern
包含 方法所GetInvalidPathChars()定義的一或多個無效字元。
searchPattern
為 null
。
searchOption
不是有效的 SearchOption 值。
指定的路徑無效 (例如,它位於未對應的磁碟機上)。
呼叫端沒有必要的權限。
備註
searchPattern
可以是常值和通配符的組合,但不支援正則表達式。 在中 searchPattern
允許下列通配符規範。
通配符規範 | 相符項 |
---|---|
* (星號) | 該位置中的零或多個字元。 |
? (問號) | 該位置中的零或一個字元。 |
通配符以外的字元是常值字元。 例如,字串 「*t」 會搜尋以字母 「t」 結尾的所有名稱。 ". 字串 searchPattern
“s*” 會搜尋以字母 “s” 開頭的所有名稱 path
。
對於子目錄, FileSystemInfo 這個方法所傳回的物件可以轉換成衍生類別 DirectoryInfo。 FileAttributes使用屬性所FileSystemInfo.Attributes傳回的值來判斷 是否FileSystemInfo代表檔案或目錄。
這個方法會預先填入下列 FileSystemInfo 屬性的值: