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()
返回
强类型 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++;
}
}
}
}
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 和 .net Core 版本早于2.1: 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++;
}
}
}
}
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 * " 搜索以 path
字母 "s" 开头的所有名称。
此方法不是递归的。
对于子目录, FileSystemInfo 此方法返回的对象可以转换为派生类 DirectoryInfo 。 使用 FileAttributes 由属性返回的值 FileSystemInfo.Attributes 来确定是 FileSystemInfo 表示文件还是目录。
允许使用通配符。 例如, searchPattern
字符串 " * t" 搜索以 path
字母 "t" 结尾的所有目录名称。 searchPattern
字符串 "s * " 搜索以 path
字母 "s" 开头的所有目录名称。
如果将字符串 ".." searchPattern
指定为有效目录名称的一部分,则只能在中使用字符串 "..."。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 和 .net Core 版本早于2.1: searchPattern
包含一个或多个由方法定义的无效字符 GetInvalidPathChars() 。
searchPattern
为 null
。
指定的路径无效(例如,它位于未映射的驱动器上)。
调用方没有所要求的权限。
注解
searchPattern
可以是文字和通配符的组合,但不支持正则表达式。 中允许使用以下通配符说明符 searchPattern
。
通配符说明符 | 匹配 |
---|---|
* (星号) | 此位置中的零个或多个字符。 |
? (问号) | 此位置中的零个或一个字符。 |
通配符以外的字符为原义字符。 例如,字符串 " * t" 搜索以字母 "t" 结尾的所有名称。 ". searchPattern
字符串 "s * " 搜索以 path
字母 "s" 开头的所有名称。
此方法不是递归的。
对于子目录, FileSystemInfo 此方法返回的对象可以转换为派生类 DirectoryInfo 。 使用 FileAttributes 由属性返回的值 FileSystemInfo.Attributes 来确定是 FileSystemInfo 表示文件还是目录。
允许使用通配符。 例如, searchPattern
字符串 " * t" 搜索以 path
字母 "t" 结尾的所有目录名称。 searchPattern
字符串 "s * " 搜索以 path
字母 "s" 开头的所有目录名称。
如果将字符串 ".." searchPattern
指定为有效目录名称的一部分,则只能在中使用字符串 "..."。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 * " 搜索以 path
字母 "s" 开头的所有名称。
对于子目录, FileSystemInfo 此方法返回的对象可以强制转换到派生类 DirectoryInfo 。 使用 FileAttributes 属性返回 FileSystemInfo.Attributes 的值来确定 是 FileSystemInfo 表示文件还是目录。
此方法预先填充以下属性的值 FileSystemInfo :