Directory.GetDirectories 메서드
정의
중요
일부 정보는 릴리스되기 전에 상당 부분 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다.
지정된 조건을 충족하는 하위 디렉터리의 이름을 반환합니다.
오버로드
| Name | Description |
|---|---|
| GetDirectories(String, String, SearchOption) |
지정된 디렉터리의 지정된 검색 패턴과 일치하는 하위 디렉터리(경로 포함)의 이름을 반환하고 필요에 따라 하위 디렉터리를 검색합니다. |
| GetDirectories(String, String, EnumerationOptions) |
지정된 디렉터리의 지정된 검색 패턴 및 열거 옵션과 일치하는 하위 디렉터리 이름(경로 포함)을 반환합니다. |
| GetDirectories(String) |
지정된 디렉터리에 있는 하위 디렉터리 이름(경로 포함)을 반환합니다. |
| GetDirectories(String, String) |
지정된 디렉터리의 지정된 검색 패턴과 일치하는 하위 디렉터리(경로 포함)의 이름을 반환합니다. |
GetDirectories(String, String, SearchOption)
지정된 디렉터리의 지정된 검색 패턴과 일치하는 하위 디렉터리(경로 포함)의 이름을 반환하고 필요에 따라 하위 디렉터리를 검색합니다.
public:
static cli::array <System::String ^> ^ GetDirectories(System::String ^ path, System::String ^ searchPattern, System::IO::SearchOption searchOption);
public static string[] GetDirectories(string path, string searchPattern, System.IO.SearchOption searchOption);
static member GetDirectories : string * string * System.IO.SearchOption -> string[]
Public Shared Function GetDirectories (path As String, searchPattern As String, searchOption As SearchOption) As String()
매개 변수
- path
- String
검색할 디렉터리의 상대 또는 절대 경로입니다. 이 문자열은 대/소문자를 구분하지 않습니다.
- searchPattern
- String
의 하위 디렉터리 이름과 일치시킬 검색 문자열입니다 path. 이 매개 변수는 유효한 리터럴과 와일드카드 문자의 조합을 포함할 수 있지만 정규식을 지원하지는 않습니다.
- searchOption
- SearchOption
검색 작업에 모든 하위 디렉터리를 포함할지 아니면 현재 디렉터리만 포함할지를 지정하는 열거형 값 중 하나입니다.
반품
지정된 조건과 일치하는 하위 디렉터리의 전체 이름(경로 포함)의 배열이거나 디렉터리를 찾을 수 없는 경우 빈 배열입니다.
예외
.NET Framework 및 .NET Core 버전 2.1 이전: path 길이가 0인 문자열이거나, 공백만 포함하거나, 하나 이상의 잘못된 문자를 포함합니다. 메서드를 사용하여 잘못된 문자를 쿼리할 GetInvalidPathChars() 수 있습니다.
-또는-
searchPattern 은 유효한 패턴을 포함하지 않습니다.
path 또는 searchPattern .입니다 null.
searchOption 가 유효한 SearchOption 값이 아닌 경우
호출자에게 필요한 권한이 없습니다.
지정된 경로, 파일 이름 또는 둘 다 시스템 정의 최대 길이를 초과합니다.
지정한 경로가 잘못되었습니다(예: 매핑되지 않은 드라이브에 있는 경우).
예제
다음 예제에서는 경로에서 지정된 문자로 시작하는 디렉터리 수를 계산합니다. 최상위 디렉터리만 검색됩니다.
using System;
using System.IO;
class Test
{
public static void Main()
{
try
{
string[] dirs = Directory.GetDirectories(@"c:\", "p*", SearchOption.TopDirectoryOnly);
Console.WriteLine("The number of directories starting with p is {0}.", dirs.Length);
foreach (string dir in dirs)
{
Console.WriteLine(dir);
}
}
catch (Exception e)
{
Console.WriteLine("The process failed: {0}", e.ToString());
}
}
}
open System.IO
try
let dirs = Directory.GetDirectories(@"c:\", "p*", SearchOption.TopDirectoryOnly)
printfn $"The number of directories starting with p is {dirs.Length}."
for dir in dirs do
printfn $"{dir}"
with e ->
printfn $"The process failed: {e}"
Imports System.IO
Public Class Test
Public Shared Sub Main()
Try
Dim dirs As String() = Directory.GetDirectories("c:\", "p*", SearchOption.TopDirectoryOnly)
Console.WriteLine("The number of directories starting with p is {0}.", dirs.Length)
Dim dir As String
For Each dir In dirs
Console.WriteLine(dir)
Next
Catch e As Exception
Console.WriteLine("The process failed: {0}", e.ToString())
End Try
End Sub
End Class
설명
매개 변수는 path 상대 또는 절대 경로 정보를 지정할 수 있으며 대/소문자를 구분하지 않습니다. 상대 경로 정보는 현재 작업 디렉터리를 기준으로 해석됩니다. 현재 작업 디렉터리를 가져오려면 다음을 참조하세요 GetCurrentDirectory.
searchPattern 는 리터럴과 와일드카드 문자의 조합일 수 있지만 정규식을 지원하지는 않습니다. 다음 와일드카드 지정자는 .에서 searchPattern허용됩니다.
| 와일드카드 지정자 | 검색 결과 |
|---|---|
| * (별표) | 해당 위치에 있는 문자가 0개 이상입니다. |
| ? (물음표) | 정확히 그 위치에 있는 한 문자입니다. |
와일드카드 이외의 문자는 리터럴 문자입니다. 예를 들어 searchPattern 문자열 "*t"는 문자 "t"로 끝나는 모든 이름을 path 검색합니다. 문자열 "s*"는 searchPattern 문자 "s"로 path 시작하는 모든 이름을 검색합니다.
searchPattern 는 두 개의 마침표("..")로 끝나거나 두 개의 마침표("..") DirectorySeparatorChar 를 포함하거나 AltDirectorySeparatorChar잘못된 문자를 포함할 수 없습니다. 메서드를 사용하여 잘못된 문자를 쿼리할 GetInvalidPathChars 수 있습니다.
및 메서드는 EnumerateDirectories 다음과 같이 다릅니다. 사용할 EnumerateDirectories때 전체 컬렉션이 반환되기 전에 이름 컬렉션을 열거할 수 있습니다. 사용할 GetDirectories때는 전체 이름 배열이 반환될 때까지 기다려야 배열에 액세스할 수 GetDirectories 있습니다. 따라서 많은 파일 및 디렉터리 EnumerateDirectories 로 작업하는 경우 더 효율적일 수 있습니다.
일반적인 I/O 작업 목록은 일반적인 I/O 작업을 참조하세요.
추가 정보
적용 대상
GetDirectories(String, String, EnumerationOptions)
지정된 디렉터리의 지정된 검색 패턴 및 열거 옵션과 일치하는 하위 디렉터리 이름(경로 포함)을 반환합니다.
public:
static cli::array <System::String ^> ^ GetDirectories(System::String ^ path, System::String ^ searchPattern, System::IO::EnumerationOptions ^ enumerationOptions);
public static string[] GetDirectories(string path, string searchPattern, System.IO.EnumerationOptions enumerationOptions);
static member GetDirectories : string * string * System.IO.EnumerationOptions -> string[]
Public Shared Function GetDirectories (path As String, searchPattern As String, enumerationOptions As EnumerationOptions) As String()
매개 변수
- path
- String
검색할 디렉터리의 상대 또는 절대 경로입니다. 이 문자열은 대/소문자를 구분하지 않습니다.
- searchPattern
- String
의 하위 디렉터리 이름과 일치시킬 검색 문자열입니다 path. 이 매개 변수는 유효한 리터럴과 와일드카드 문자의 조합을 포함할 수 있지만 정규식을 지원하지는 않습니다.
- enumerationOptions
- EnumerationOptions
사용할 검색 및 열거형 구성을 설명하는 개체입니다.
반품
지정된 디렉터리의 검색 패턴 및 열거 옵션과 일치하는 하위 디렉터리의 전체 이름(경로 포함)의 배열이거나 디렉터리가 없는 경우 빈 배열입니다.
예외
호출자에게 필요한 권한이 없습니다.
.NET Framework 및 .NET Core 버전 2.1 이전: path 길이가 0인 문자열이거나, 공백만 포함하거나, 하나 이상의 잘못된 문자를 포함합니다. 를 사용하여 GetInvalidPathChars()잘못된 문자를 쿼리할 수 있습니다.
-또는-
searchPattern 에는 유효한 패턴이 포함되어 있지 않습니다.
path 또는 searchPattern .입니다 null.
지정된 경로, 파일 이름 또는 둘 다 시스템 정의 최대 길이를 초과합니다.
지정한 경로가 잘못되었습니다(예: 매핑되지 않은 드라이브에 있는 경우).
설명
이 메서드는 지정된 검색 패턴과 일치하는 지정된 디렉터리 바로 아래에 있는 모든 하위 디렉터리를 반환합니다. 지정된 디렉터리에 하위 디렉터리가 없거나 매개 변수와 일치하는 searchPattern 하위 디렉터리가 없으면 이 메서드는 빈 배열을 반환합니다. 상위 디렉터리만 검색됩니다. 하위 디렉터리도 검색하려면 메서드를 GetDirectories(String, String, SearchOption) 사용하고 매개 변수에 searchOption 지정 AllDirectories 합니다.
searchPattern 는 리터럴과 와일드카드 문자의 조합일 수 있지만 정규식을 지원하지는 않습니다. 다음 와일드카드 지정자는 .에서 searchPattern허용됩니다.
| 와일드카드 지정자 | 검색 결과 |
|---|---|
| * (별표) | 해당 위치에 있는 문자가 0개 이상입니다. |
| ? (물음표) | 정확히 그 위치에 있는 한 문자입니다. |
와일드카드 이외의 문자는 리터럴 문자입니다. 예를 들어 searchPattern 문자열 "*t"는 문자 "t"로 끝나는 모든 이름을 path 검색합니다. 문자열 "s*"는 searchPattern 문자 "s"로 path 시작하는 모든 이름을 검색합니다.
searchPattern 는 두 개의 마침표("..")로 끝나거나 두 개의 마침표("..") DirectorySeparatorChar 를 포함하거나 AltDirectorySeparatorChar잘못된 문자를 포함할 수 없습니다. 메서드를 사용하여 잘못된 문자를 쿼리할 GetInvalidPathChars 수 있습니다.
매개 변수는 path 상대 또는 절대 경로 정보를 지정할 수 있으며 대/소문자를 구분하지 않습니다. 상대 경로 정보는 현재 작업 디렉터리를 기준으로 해석됩니다. 현재 작업 디렉터리를 가져오려면 다음을 참조하세요 GetCurrentDirectory.
및 메서드는 EnumerateDirectories 다음과 같이 다릅니다. 사용할 EnumerateDirectories때 전체 컬렉션이 반환되기 전에 이름 컬렉션을 열거할 수 있습니다. 사용할 GetDirectories때는 전체 이름 배열이 반환될 때까지 기다려야 배열에 액세스할 수 GetDirectories 있습니다. 따라서 많은 파일 및 디렉터리 EnumerateDirectories 로 작업하는 경우 더 효율적일 수 있습니다.
일반적인 I/O 작업 목록은 일반적인 I/O 작업을 참조하세요.
적용 대상
GetDirectories(String)
지정된 디렉터리에 있는 하위 디렉터리 이름(경로 포함)을 반환합니다.
public:
static cli::array <System::String ^> ^ GetDirectories(System::String ^ path);
public static string[] GetDirectories(string path);
static member GetDirectories : string -> string[]
Public Shared Function GetDirectories (path As String) As String()
매개 변수
- path
- String
검색할 디렉터리의 상대 또는 절대 경로입니다. 이 문자열은 대/소문자를 구분하지 않습니다.
반품
지정된 경로에 있는 하위 디렉터리의 전체 이름(경로 포함)의 배열이거나 디렉터리가 없는 경우 빈 배열입니다.
예외
호출자에게 필요한 권한이 없습니다.
.NET Framework 및 .NET Core 버전 2.1 이전: path 길이가 0인 문자열이거나, 공백만 포함하거나, 하나 이상의 잘못된 문자를 포함합니다. 메서드를 사용하여 잘못된 문자를 쿼리할 GetInvalidPathChars() 수 있습니다.
path은 null입니다.
지정된 경로, 파일 이름 또는 둘 다 시스템 정의 최대 길이를 초과합니다.
지정한 경로가 잘못되었습니다(예: 매핑되지 않은 드라이브에 있는 경우).
예제
다음 예제에서는 명령줄에서 파일 또는 디렉터리 이름의 배열을 가져와서 이름 종류를 결정하고 적절하게 처리합니다.
// For Directory.GetFiles and Directory.GetDirectories
// For File.Exists, Directory.Exists
using System;
using System.IO;
using System.Collections;
public class RecursiveFileProcessor
{
public static void Main(string[] args)
{
foreach(string path in args)
{
if(File.Exists(path))
{
// This path is a file
ProcessFile(path);
}
else if(Directory.Exists(path))
{
// This path is a directory
ProcessDirectory(path);
}
else
{
Console.WriteLine("{0} is not a valid file or directory.", path);
}
}
}
// Process all files in the directory passed in, recurse on any directories
// that are found, and process the files they contain.
public static void ProcessDirectory(string targetDirectory)
{
// Process the list of files found in the directory.
string [] fileEntries = Directory.GetFiles(targetDirectory);
foreach(string fileName in fileEntries)
ProcessFile(fileName);
// Recurse into subdirectories of this directory.
string [] subdirectoryEntries = Directory.GetDirectories(targetDirectory);
foreach(string subdirectory in subdirectoryEntries)
ProcessDirectory(subdirectory);
}
// Insert logic for processing found files here.
public static void ProcessFile(string path)
{
Console.WriteLine("Processed file '{0}'.", path);
}
}
module RecursiveFileProcessor
open System.IO
// Insert logic for processing found files here.
let processFile path =
printfn $"Processed file '%s{path}'."
// Process all files in the directory passed in, recurse on any directories
// that are found, and process the files they contain.
let rec processDirectory targetDirectory =
// Process the list of files found in the directory.
let fileEntries = Directory.GetFiles targetDirectory
for fileName in fileEntries do
processFile fileName
// Recurse into subdirectories of this directory.
let subdirectoryEntries = Directory.GetDirectories targetDirectory
for subdirectory in subdirectoryEntries do
processDirectory subdirectory
[<EntryPoint>]
let main args =
for path in args do
if File.Exists path then
// This path is a file
processFile path
elif Directory.Exists path then
// This path is a directory
processDirectory path
else
printfn $"{path} is not a valid file or directory."
0
' For Directory.GetFiles and Directory.GetDirectories
' For File.Exists, Directory.Exists
Imports System.IO
Imports System.Collections
Public Class RecursiveFileProcessor
Public Overloads Shared Sub Main(ByVal args() As String)
Dim path As String
For Each path In args
If File.Exists(path) Then
' This path is a file.
ProcessFile(path)
Else
If Directory.Exists(path) Then
' This path is a directory.
ProcessDirectory(path)
Else
Console.WriteLine("{0} is not a valid file or directory.", path)
End If
End If
Next path
End Sub
' Process all files in the directory passed in, recurse on any directories
' that are found, and process the files they contain.
Public Shared Sub ProcessDirectory(ByVal targetDirectory As String)
Dim fileEntries As String() = Directory.GetFiles(targetDirectory)
' Process the list of files found in the directory.
Dim fileName As String
For Each fileName In fileEntries
ProcessFile(fileName)
Next fileName
Dim subdirectoryEntries As String() = Directory.GetDirectories(targetDirectory)
' Recurse into subdirectories of this directory.
Dim subdirectory As String
For Each subdirectory In subdirectoryEntries
ProcessDirectory(subdirectory)
Next subdirectory
End Sub
' Insert logic for processing found files here.
Public Shared Sub ProcessFile(ByVal path As String)
Console.WriteLine("Processed file '{0}'.", path)
End Sub
End Class
설명
이 메서드는 검색 패턴으로 지정된 별표(*)와 동일 GetDirectories(String, String) 하므로 모든 하위 디렉터리를 반환합니다. 하위 디렉터리를 검색해야 하는 경우 매개 변수를 사용하여 하위 디렉터리 검색을 지정할 수 있는 메서드를 searchOption 사용합니다GetDirectories(String, String, SearchOption).
및 메서드는 EnumerateDirectories 다음과 같이 다릅니다. 사용할 EnumerateDirectories때 전체 컬렉션이 반환되기 전에 이름 컬렉션을 열거할 수 있습니다. 사용할 GetDirectories때는 전체 이름 배열이 반환될 때까지 기다려야 배열에 액세스할 수 GetDirectories 있습니다. 따라서 많은 파일 및 디렉터리 EnumerateDirectories 로 작업하는 경우 더 효율적일 수 있습니다.
매개 변수는 path 상대 또는 절대 경로 정보를 지정할 수 있습니다. 상대 경로 정보는 현재 작업 디렉터리를 기준으로 해석됩니다. 현재 작업 디렉터리를 가져오려면 다음을 참조하세요 GetCurrentDirectory.
이 메서드에서 반환된 이름에는 제공된 디렉터리 정보가 접두사로 지정됩니다 path.
매개 변수의 path 대/소문자 구분은 코드가 실행 중인 파일 시스템의 대/소문자 구분에 해당합니다. 예를 들어 NTFS(기본 Windows 파일 시스템)에서는 대/소문자를 구분하지 않으며 Linux 파일 시스템에서는 대/소문자를 구분합니다.
일반적인 I/O 작업 목록은 일반적인 I/O 작업을 참조하세요.
추가 정보
적용 대상
GetDirectories(String, String)
지정된 디렉터리의 지정된 검색 패턴과 일치하는 하위 디렉터리(경로 포함)의 이름을 반환합니다.
public:
static cli::array <System::String ^> ^ GetDirectories(System::String ^ path, System::String ^ searchPattern);
public static string[] GetDirectories(string path, string searchPattern);
static member GetDirectories : string * string -> string[]
Public Shared Function GetDirectories (path As String, searchPattern As String) As String()
매개 변수
- path
- String
검색할 디렉터리의 상대 또는 절대 경로입니다. 이 문자열은 대/소문자를 구분하지 않습니다.
- searchPattern
- String
의 하위 디렉터리 이름과 일치시킬 검색 문자열입니다 path. 이 매개 변수는 유효한 리터럴과 와일드카드 문자의 조합을 포함할 수 있지만 정규식을 지원하지는 않습니다.
반품
지정된 디렉터리의 검색 패턴과 일치하는 하위 디렉터리의 전체 이름(경로 포함)의 배열이거나 디렉터리를 찾을 수 없는 경우 빈 배열입니다.
예외
호출자에게 필요한 권한이 없습니다.
.NET Framework 및 .NET Core 버전 2.1 이전: path 길이가 0인 문자열이거나, 공백만 포함하거나, 하나 이상의 잘못된 문자를 포함합니다. 를 사용하여 GetInvalidPathChars()잘못된 문자를 쿼리할 수 있습니다.
-또는-
searchPattern 에는 유효한 패턴이 포함되어 있지 않습니다.
path 또는 searchPattern .입니다 null.
지정된 경로, 파일 이름 또는 둘 다 시스템 정의 최대 길이를 초과합니다.
지정한 경로가 잘못되었습니다(예: 매핑되지 않은 드라이브에 있는 경우).
예제
다음 예제에서는 지정된 문자로 시작하는 경로의 디렉터리 수를 계산합니다.
using System;
using System.IO;
class Test
{
public static void Main()
{
try
{
// Only get subdirectories that begin with the letter "p."
string[] dirs = Directory.GetDirectories(@"c:\", "p*");
Console.WriteLine("The number of directories starting with p is {0}.", dirs.Length);
foreach (string dir in dirs)
{
Console.WriteLine(dir);
}
}
catch (Exception e)
{
Console.WriteLine("The process failed: {0}", e.ToString());
}
}
}
open System.IO
try
// Only get subdirectories that begin with the letter "p."
let dirs = Directory.GetDirectories(@"c:\", "p*")
printfn $"The number of directories starting with p is {dirs.Length}."
for dir in dirs do
printfn $"{dir}"
with e ->
printfn $"The process failed: {e}"
Imports System.IO
Public Class Test
Public Shared Sub Main()
Try
' Only get subdirectories that begin with the letter "p."
Dim dirs As String() = Directory.GetDirectories("c:\", "p*")
Console.WriteLine("The number of directories starting with p is {0}.", dirs.Length)
Dim dir As String
For Each dir In dirs
Console.WriteLine(dir)
Next
Catch e As Exception
Console.WriteLine("The process failed: {0}", e.ToString())
End Try
End Sub
End Class
설명
이 메서드는 지정된 검색 패턴과 일치하는 지정된 디렉터리 바로 아래에 있는 모든 하위 디렉터리를 반환합니다. 지정된 디렉터리에 하위 디렉터리가 없거나 매개 변수와 일치하는 searchPattern 하위 디렉터리가 없으면 이 메서드는 빈 배열을 반환합니다. 상위 디렉터리만 검색됩니다. 하위 디렉터리도 검색하려면 메서드를 GetDirectories(String, String, SearchOption) 사용하고 매개 변수에 searchOption 지정 AllDirectories 합니다.
searchPattern 는 리터럴과 와일드카드 문자의 조합일 수 있지만 정규식을 지원하지는 않습니다. 다음 와일드카드 지정자는 .에서 searchPattern허용됩니다.
| 와일드카드 지정자 | 검색 결과 |
|---|---|
| * (별표) | 해당 위치에 있는 문자가 0개 이상입니다. |
| ? (물음표) | 정확히 그 위치에 있는 한 문자입니다. |
와일드카드 이외의 문자는 리터럴 문자입니다. 예를 들어 searchPattern 문자열 "*t"는 문자 "t"로 끝나는 모든 이름을 path 검색합니다. 문자열 "s*"는 searchPattern 문자 "s"로 path 시작하는 모든 이름을 검색합니다.
searchPattern 는 두 개의 마침표("..")로 끝나거나 두 개의 마침표("..") DirectorySeparatorChar 를 포함하거나 AltDirectorySeparatorChar잘못된 문자를 포함할 수 없습니다. 메서드를 사용하여 잘못된 문자를 쿼리할 GetInvalidPathChars 수 있습니다.
매개 변수는 path 상대 또는 절대 경로 정보를 지정할 수 있으며 대/소문자를 구분하지 않습니다. 상대 경로 정보는 현재 작업 디렉터리를 기준으로 해석됩니다. 현재 작업 디렉터리를 가져오려면 다음을 참조하세요 GetCurrentDirectory.
및 메서드는 EnumerateDirectories 다음과 같이 다릅니다. 사용할 EnumerateDirectories때 전체 컬렉션이 반환되기 전에 이름 컬렉션을 열거할 수 있습니다. 사용할 GetDirectories때는 전체 이름 배열이 반환될 때까지 기다려야 배열에 액세스할 수 GetDirectories 있습니다. 따라서 많은 파일 및 디렉터리 EnumerateDirectories 로 작업하는 경우 더 효율적일 수 있습니다.
일반적인 I/O 작업 목록은 일반적인 I/O 작업을 참조하세요.