Поделиться через


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
Наследование
Атрибуты

Примеры

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

using namespace System;
using namespace System::IO;
int main()
{
   
   // Specify the directories you want to manipulate.
   DirectoryInfo^ di = gcnew 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 0;
      }
      
      // 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 );
   }

}
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) == false)
        {
            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)
LinkTarget

Возвращает целевой путь к ссылке, расположенной в FullName, или null , если этот FileSystemInfo экземпляр не представляет ссылку.

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

Получает имя данного экземпляра DirectoryInfo.

Parent

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

Root

Получает Корневую часть каталога.

UnixFileMode

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

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

Методы

Create()

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

Create(DirectorySecurity)

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

CreateAsSymbolicLink(String)

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

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

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

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

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

CreateSubdirectory(String, DirectorySecurity)

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

Delete()

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

Delete(Boolean)

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

EnumerateDirectories()

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

EnumerateDirectories(String)

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

EnumerateDirectories(String, EnumerationOptions)

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

EnumerateDirectories(String, SearchOption)

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

EnumerateFiles()

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

EnumerateFiles(String)

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

EnumerateFiles(String, EnumerationOptions)

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

EnumerateFiles(String, SearchOption)

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

EnumerateFileSystemInfos()

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

EnumerateFileSystemInfos(String)

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

EnumerateFileSystemInfos(String, EnumerationOptions)

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

EnumerateFileSystemInfos(String, SearchOption)

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

Equals(Object)

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

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

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

GetAccessControl(AccessControlSections)

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

GetDirectories()

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

GetDirectories(String)

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

GetDirectories(String, EnumerationOptions)

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

GetDirectories(String, SearchOption)

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

GetFiles()

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

GetFiles(String)

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

GetFiles(String, EnumerationOptions)

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

GetFiles(String, SearchOption)

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

GetFileSystemInfos()

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

GetFileSystemInfos(String)

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

GetFileSystemInfos(String, EnumerationOptions)

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

GetFileSystemInfos(String, SearchOption)

Извлекает массив объектов 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)
ResolveLinkTarget(Boolean)

Возвращает целевой объект указанной ссылки.

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

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

ToString()

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

ToString()

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

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

Методы расширения

Create(DirectoryInfo, DirectorySecurity)

Создает каталог с указанными атрибутами безопасности. Если каталог уже существует, ничего не происходит.

GetAccessControl(DirectoryInfo)

Возвращает сведения о безопасности для каталога.

GetAccessControl(DirectoryInfo, AccessControlSections)

Возвращает сведения о безопасности для каталога.

SetAccessControl(DirectoryInfo, DirectorySecurity)

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

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

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