DirectoryInfo Класс

Определение

Предоставляет методы экземпляра для создания, перемещения и перечисления с помощью каталогов и подкаталогов. Этот класс не наследуется.

public ref class DirectoryInfo sealed : System::IO::FileSystemInfo
public sealed class DirectoryInfo : System.IO.FileSystemInfo
[System.Serializable]
public sealed class DirectoryInfo : System.IO.FileSystemInfo
[System.Serializable]
[System.Runtime.InteropServices.ComVisible(true)]
public sealed class DirectoryInfo : System.IO.FileSystemInfo
type DirectoryInfo = class
    inherit FileSystemInfo
[<System.Serializable>]
type DirectoryInfo = class
    inherit FileSystemInfo
[<System.Serializable>]
[<System.Runtime.InteropServices.ComVisible(true)>]
type DirectoryInfo = class
    inherit FileSystemInfo
Public NotInheritable Class DirectoryInfo
Inherits FileSystemInfo
Наследование
DirectoryInfo
Наследование
Атрибуты

Примеры

В следующем примере показаны некоторые основные члены DirectoryInfo класса.

using System;
using System.IO;

class Test
{
    public static void Main()
    {
        // Specify the directories you want to manipulate.
        DirectoryInfo di = new DirectoryInfo(@"c:\MyDir");
        try
        {
            // Determine whether the directory exists.
            if (di.Exists)
            {
                // Indicate that the directory already exists.
                Console.WriteLine("That path exists already.");
                return;
            }

            // Try to create the directory.
            di.Create();
            Console.WriteLine("The directory was created successfully.");

            // Delete the directory.
            di.Delete();
            Console.WriteLine("The directory was deleted successfully.");
        }
        catch (Exception e)
        {
            Console.WriteLine("The process failed: {0}", e.ToString());
        }
        finally {}
    }
}
open System.IO

// Specify the directories you want to manipulate.
let di = DirectoryInfo @"c:\MyDir"
try
    // Determine whether the directory exists.
    if di.Exists then
        // Indicate that the directory already exists.
        printfn "That path exists already."
    else
        // Try to create the directory.
        di.Create()
        printfn "The directory was created successfully."

        // Delete the directory.
        di.Delete()
        printfn "The directory was deleted successfully."
with e ->
    printfn $"The process failed: {e}"
Imports System.IO

Public Class Test
    Public Shared Sub Main()
        ' Specify the directories you want to manipulate.
        Dim di As DirectoryInfo = New DirectoryInfo("c:\MyDir")
        Try
            ' Determine whether the directory exists.
            If di.Exists Then
                ' Indicate that it already exists.
                Console.WriteLine("That path exists already.")
                Return
            End If

            ' Try to create the directory.
            di.Create()
            Console.WriteLine("The directory was created successfully.")

            ' Delete the directory.
            di.Delete()
            Console.WriteLine("The directory was deleted successfully.")

        Catch e As Exception
            Console.WriteLine("The process failed: {0}", e.ToString())
        End Try
    End Sub
End Class

В следующем примере показано, как скопировать каталог и его содержимое.

using System;
using System.IO;

class CopyDir
{
    public static void CopyAll(DirectoryInfo source, DirectoryInfo target)
    {
        if (source.FullName.ToLower() == target.FullName.ToLower())
        {
            return;
        }

        // Check if the target directory exists, if not, create it.
        if (!Directory.Exists(target.FullName))
        {
            Directory.CreateDirectory(target.FullName);
        }

        // Copy each file into it's new directory.
        foreach (FileInfo fi in source.GetFiles())
        {
            Console.WriteLine(@"Copying {0}\{1}", target.FullName, fi.Name);
            fi.CopyTo(Path.Combine(target.ToString(), fi.Name), true);
        }

        // Copy each subdirectory using recursion.
        foreach (DirectoryInfo diSourceSubDir in source.GetDirectories())
        {
            DirectoryInfo nextTargetSubDir =
                target.CreateSubdirectory(diSourceSubDir.Name);
            CopyAll(diSourceSubDir, nextTargetSubDir);
        }
    }

    public static void Main()
    {
        string sourceDirectory = @"c:\sourceDirectory";
        string targetDirectory = @"c:\targetDirectory";

        DirectoryInfo diSource = new DirectoryInfo(sourceDirectory);
        DirectoryInfo diTarget = new DirectoryInfo(targetDirectory);

        CopyAll(diSource, diTarget);
    }

    // Output will vary based on the contents of the source directory.
}
open System.IO

let rec copyAll (source: DirectoryInfo) (target: DirectoryInfo) =
    if source.FullName.ToLower() <> target.FullName.ToLower() then
        // Check if the target directory exists, if not, create it.
        if not (Directory.Exists target.FullName) then
            Directory.CreateDirectory target.FullName |> ignore

        // Copy each file into it's new directory.
        for fi in source.GetFiles() do
            printfn $@"Copying {target.FullName}\{fi.Name}"
            fi.CopyTo(Path.Combine(string target, fi.Name), true) |> ignore

        // Copy each subdirectory using recursion.
        for diSourceSubDir in source.GetDirectories() do
            target.CreateSubdirectory diSourceSubDir.Name
            |> copyAll diSourceSubDir

let sourceDirectory = @"c:\sourceDirectory"
let targetDirectory = @"c:\targetDirectory"

let diSource = DirectoryInfo sourceDirectory
let diTarget = DirectoryInfo targetDirectory

copyAll diSource diTarget

// Output will vary based on the contents of the source directory.
Imports System.IO

Class CopyDir
    Shared Sub CopyAll(ByVal source As DirectoryInfo, ByVal target As DirectoryInfo)
        If (source.FullName.ToLower() = target.FullName.ToLower()) Then
            Return
        End If

        ' Check if the target directory exists, if not, create it.
        If Directory.Exists(target.FullName) = False Then
            Directory.CreateDirectory(target.FullName)
        End If

        ' Copy each file into it's new directory.
        For Each fi As FileInfo In source.GetFiles()
            Console.WriteLine("Copying {0}\{1}", target.FullName, fi.Name)
            fi.CopyTo(Path.Combine(target.ToString(), fi.Name), True)
        Next

        ' Copy each subdirectory using recursion.
        For Each diSourceSubDir As DirectoryInfo In source.GetDirectories()
            Dim nextTargetSubDir As DirectoryInfo = target.CreateSubdirectory(diSourceSubDir.Name)
            CopyAll(diSourceSubDir, nextTargetSubDir)
        Next
    End Sub

    Shared Sub Main()
        Dim sourceDirectory As String = "c:\\sourceDirectory"
        Dim targetDirectory As String = "c:\\targetDirectory"

        Dim diSource As DirectoryInfo = New DirectoryInfo(sourceDirectory)
        Dim diTarget As DirectoryInfo = New DirectoryInfo(targetDirectory)

        CopyAll(diSource, diTarget)
    End Sub
    ' Output will vary based on the contents of the source directory.
End Class

Комментарии

DirectoryInfo Используйте класс для типичных операций, таких как копирование, перемещение, переименование, создание и удаление каталогов.

Если вы собираетесь повторно использовать объект несколько раз, рассмотрите возможность использования метода DirectoryInfo экземпляра вместо соответствующих статических методов Directory класса, так как проверка безопасности не всегда требуется.

Замечание

В членах, которые принимают путь в качестве входной строки, этот путь должен быть хорошо сформирован или создается исключение. Например, если путь является полным, но начинается с пробела, путь не обрезается в методах класса. Таким образом, путь неправильно сформирован и возникает исключение. Аналогичным образом, путь или сочетание путей не может быть полностью полный дважды. Например, "c:\temp c:\windows" также вызывает исключение в большинстве случаев. Убедитесь, что пути хорошо сформированы при использовании методов, которые принимают строку пути.

В членах, которые принимают путь, путь может ссылаться на файл или только каталог. Указанный путь также может ссылаться на относительный путь или UNC-путь для сервера и имени общего ресурса. Например, все следующие возможные пути:

  • "c:\\MyDir\\MyFile.txt" в C#или "c:\MyDir\MyFile.txt" в Visual Basic.

  • C:\\MyDir в C#или c:\MyDir в Visual Basic.

  • "MyDir\\MySubdir" в C# или "MyDir\MySubDir" в Visual Basic.

  • "\MyServer\\MyShare" в C#или \\MyServer\MyShare в Visual Basic.

По умолчанию всем пользователям предоставляется полный доступ на чтение и запись к новым каталогам.

Список распространенных задач ввода-вывода см. в разделе Распространенные задачи ввода-вывода.

Конструкторы

Имя Описание
DirectoryInfo(String)

Инициализирует новый экземпляр DirectoryInfo класса по указанному пути.

Поля

Имя Описание
FullPath

Представляет полный путь к каталогу или файлу.

(Унаследовано от FileSystemInfo)
OriginalPath

Путь, первоначально заданный пользователем, независимо от того, является ли относительный или абсолютный.

(Унаследовано от FileSystemInfo)

Свойства

Имя Описание
Attributes

Возвращает или задает атрибуты текущего файла или каталога.

(Унаследовано от FileSystemInfo)
CreationTime

Возвращает или задает время создания текущего файла или каталога.

(Унаследовано от FileSystemInfo)
CreationTimeUtc

Возвращает или задает время создания (в формате UTC) текущего файла или каталога.

(Унаследовано от FileSystemInfo)
Exists

Возвращает значение, указывающее, существует ли каталог.

Extension

Получает часть расширения имени файла, в том числе в начале . , даже если это имя файла целиком, или пустая строка, если расширение отсутствует.

(Унаследовано от FileSystemInfo)
FullName

Возвращает полный путь к каталогу.

FullName

Получает полный путь к каталогу или файлу.

(Унаследовано от FileSystemInfo)
LastAccessTime

Возвращает или задает время последнего доступа к текущему файлу или каталогу.

(Унаследовано от FileSystemInfo)
LastAccessTimeUtc

Возвращает или задает время в формате UTC, к которому последний доступ был доступ к текущему файлу или каталогу.

(Унаследовано от FileSystemInfo)
LastWriteTime

Возвращает или задает время последнего записи текущего файла или каталога.

(Унаследовано от FileSystemInfo)
LastWriteTimeUtc

Получает или задает время( в формате UTC), когда текущий файл или каталог был записан в последний раз.

(Унаследовано от FileSystemInfo)
Name

Возвращает имя этого DirectoryInfo экземпляра.

Parent

Возвращает родительский каталог указанного подкаталога.

Root

Возвращает корневую часть каталога.

Методы

Имя Описание
Create()

Создает каталог.

Create(DirectorySecurity)

Создает каталог с помощью DirectorySecurity объекта.

CreateObjRef(Type)

Создает объект, содержащий все соответствующие сведения, необходимые для создания прокси-сервера, используемого для взаимодействия с удаленным объектом.

(Унаследовано от MarshalByRefObject)
CreateSubdirectory(String, DirectorySecurity)

Создает подкаталог или подкаталоги по указанному пути с заданным безопасностью. Указанный путь может быть относительно этого экземпляра DirectoryInfo класса.

CreateSubdirectory(String)

Создает подкаталог или вложенные каталоги по указанному пути. Указанный путь может быть относительно этого экземпляра DirectoryInfo класса.

Delete()

Удаляет его DirectoryInfo , если он пуст.

Delete(Boolean)

Удаляет этот экземпляр объекта DirectoryInfo, указывающий, следует ли удалять вложенные каталоги и файлы.

EnumerateDirectories()

Возвращает перечисленную коллекцию сведений о каталоге в текущем каталоге.

EnumerateDirectories(String, EnumerationOptions)

Возвращает перечисляемую коллекцию сведений о каталоге, соответствующую указанному шаблону поиска и параметрам перечисления.

EnumerateDirectories(String, SearchOption)

Возвращает перечисленную коллекцию сведений каталога, которая соответствует указанному шаблону поиска и параметру подкаталога поиска.

EnumerateDirectories(String)

Возвращает перечисленную коллекцию сведений о каталоге, которая соответствует указанному шаблону поиска.

EnumerateFiles()

Возвращает перечисленную коллекцию сведений о файле в текущем каталоге.

EnumerateFiles(String, EnumerationOptions)

Возвращает перечисляемую коллекцию сведений о файле, соответствующую указанному шаблону поиска и параметрам перечисления.

EnumerateFiles(String, SearchOption)

Возвращает перечисленную коллекцию сведений о файле, которая соответствует указанному шаблону поиска и параметру подкаталога поиска.

EnumerateFiles(String)

Возвращает перечисленную коллекцию сведений о файле, которая соответствует шаблону поиска.

EnumerateFileSystemInfos()

Возвращает перечисленную коллекцию сведений файловой системы в текущем каталоге.

EnumerateFileSystemInfos(String, EnumerationOptions)

Возвращает перечисляемую коллекцию сведений файловой системы, которая соответствует указанному шаблону поиска и параметрам перечисления.

EnumerateFileSystemInfos(String, SearchOption)

Возвращает перечисленную коллекцию сведений файловой системы, которая соответствует указанному шаблону поиска и параметру подкаталога поиска.

EnumerateFileSystemInfos(String)

Возвращает перечисленную коллекцию сведений файловой системы, которая соответствует указанному шаблону поиска.

Equals(Object)

Определяет, равен ли указанный объект текущему объекту.

(Унаследовано от Object)
GetAccessControl()

DirectorySecurity Возвращает объект, инкапсулирующий записи списка управления доступом (ACL) для каталога, описанного текущим DirectoryInfo объектом.

GetAccessControl(AccessControlSections)

DirectorySecurity Возвращает объект, инкапсулирующий указанный тип записей списка управления доступом (ACL) для каталога, описанного текущим DirectoryInfo объектом.

GetDirectories()

Возвращает подкаталоги текущего каталога.

GetDirectories(String, EnumerationOptions)

Возвращает массив каталогов в текущем DirectoryInfo сопоставлении указанных параметров поиска и перечисления.

GetDirectories(String, SearchOption)

Возвращает массив каталогов в текущем DirectoryInfo соответствии заданным критериям поиска и использует значение для определения того, следует ли выполнять поиск подкаталогов.

GetDirectories(String)

Возвращает массив каталогов в текущем DirectoryInfo соответствии с заданными критериями поиска.

GetFiles()

Возвращает список файлов из текущего каталога.

GetFiles(String, EnumerationOptions)

Возвращает список файлов из текущего каталога, соответствующий указанному шаблону поиска и параметрам перечисления.

GetFiles(String, SearchOption)

Возвращает список файлов из текущего каталога, соответствующий заданному шаблону поиска и используя значение, чтобы определить, следует ли выполнять поиск подкаталогов.

GetFiles(String)

Возвращает список файлов из текущего каталога, соответствующий заданному шаблону поиска.

GetFileSystemInfos()

Возвращает массив строго типизированных FileSystemInfo записей, представляющих все файлы и вложенные каталоги в каталоге.

GetFileSystemInfos(String, EnumerationOptions)

Извлекает массив строго типизированных FileSystemInfo объектов, представляющих файлы и подкаталогы, соответствующие указанному шаблону поиска и параметрам перечисления.

GetFileSystemInfos(String, SearchOption)

Извлекает массив FileSystemInfo объектов, представляющих файлы и вложенные каталоги, соответствующие указанным критериям поиска.

GetFileSystemInfos(String)

Извлекает массив строго типизированных FileSystemInfo объектов, представляющих файлы и подкаталоги, соответствующие указанным критериям поиска.

GetHashCode()

Служит хэш-функцией по умолчанию.

(Унаследовано от Object)
GetLifetimeService()

Извлекает текущий объект службы времени существования, который управляет политикой времени существования для этого экземпляра.

(Унаследовано от MarshalByRefObject)
GetObjectData(SerializationInfo, StreamingContext)

SerializationInfo Задает объект с именем файла и дополнительными сведениями об исключении.

(Унаследовано от FileSystemInfo)
GetType()

Возвращает Type текущего экземпляра.

(Унаследовано от Object)
InitializeLifetimeService()

Получает объект службы времени существования для управления политикой времени существования для этого экземпляра.

(Унаследовано от MarshalByRefObject)
MemberwiseClone()

Создает неглубокую копию текущей Object.

(Унаследовано от Object)
MemberwiseClone(Boolean)

Создает неглубокую копию текущего MarshalByRefObject объекта.

(Унаследовано от MarshalByRefObject)
MoveTo(String)

DirectoryInfo Перемещает экземпляр и его содержимое в новый путь.

Refresh()

Обновляет состояние объекта.

(Унаследовано от FileSystemInfo)
SetAccessControl(DirectorySecurity)

Применяет записи списка управления доступом (ACL), описанные объектом, к каталогу, описанному DirectorySecurity текущим DirectoryInfo объектом.

ToString()

Возвращает исходный путь, переданный конструктору DirectoryInfo . FullName Name Используйте свойства для полного пути или имени файла или каталога вместо этого метода.

Применяется к

См. также раздел