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


Directory Класс

Определение

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

public ref class Directory abstract sealed
public ref class Directory sealed
public static class Directory
public sealed class Directory
[System.Runtime.InteropServices.ComVisible(true)]
public static class Directory
type Directory = class
[<System.Runtime.InteropServices.ComVisible(true)>]
type Directory = class
Public Class Directory
Public NotInheritable Class Directory
Наследование
Directory
Атрибуты

Примеры

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

using System;
using System.IO;

namespace ConsoleApplication
{
    class Program
    {
        static void Main(string[] args)
        {
            string sourceDirectory = @"C:\current";
            string archiveDirectory = @"C:\archive";

            try
            {
                var txtFiles = Directory.EnumerateFiles(sourceDirectory, "*.txt");

                foreach (string currentFile in txtFiles)
                {
                    string fileName = currentFile.Substring(sourceDirectory.Length + 1);
                    Directory.Move(currentFile, Path.Combine(archiveDirectory, fileName));
                }
            }
            catch (Exception e)
            {
                Console.WriteLine(e.Message);
            }
        }
    }
}
open System.IO

let sourceDirectory = @"C:\current"
let archiveDirectory = @"C:\archive"

try
    let txtFiles = Directory.EnumerateFiles(sourceDirectory, "*.txt")

    for currentFile in txtFiles do
        let fileName = currentFile.Substring(sourceDirectory.Length + 1)
        Directory.Move(currentFile, Path.Combine(archiveDirectory, fileName))

with e ->
    printfn $"{e.Message}"
Imports System.IO

Module Module1

    Sub Main()
        Dim sourceDirectory As String = "C:\current"
        Dim archiveDirectory As String = "C:\archive"

        Try
            Dim txtFiles = Directory.EnumerateFiles(sourceDirectory, "*.txt")

            For Each currentFile As String In txtFiles
                Dim fileName = currentFile.Substring(sourceDirectory.Length + 1)
                Directory.Move(currentFile, Path.Combine(archiveDirectory, fileName))
            Next
        Catch e As Exception
            Console.WriteLine(e.Message)
        End Try
    End Sub

End Module

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

using System;
using System.IO;
using System.Linq;

namespace ConsoleApplication
{
    class Program
    {
        static void Main(string[] args)
        {
            string archiveDirectory = @"C:\archive";

            var files = from retrievedFile in Directory.EnumerateFiles(archiveDirectory, "*.txt", SearchOption.AllDirectories)
                        from line in File.ReadLines(retrievedFile)
                        where line.Contains("Example")
                        select new
                        {
                            File = retrievedFile,
                            Line = line
                        };

            foreach (var f in files)
            {
                Console.WriteLine("{0} contains {1}", f.File, f.Line);
            }
            Console.WriteLine("{0} lines found.", files.Count().ToString());
        }
    }
}
open System.IO

let archiveDirectory = @"C:\archive"

let files = 
    query {
        for retrivedFile in Directory.EnumerateFiles(archiveDirectory, "*.txt", SearchOption.AllDirectories) do
        for line in File.ReadLines retrivedFile do
        where (line.Contains "file") 
        select 
            {| File = retrivedFile 
               Line = line |}
    }

for f in files do
    printfn $"{f.File} contains {f.Line}"
printfn "{Seq.length files} lines found."
Imports System.IO

Module Module1

    Sub Main()
        Dim archiveDirectory As String = "C:\archive"

        Dim files = From retrievedFile In Directory.EnumerateFiles(archiveDirectory, "*.txt", SearchOption.AllDirectories)
                    From line In File.ReadLines(retrievedFile)
                    Where line.Contains("Example")
                    Select New With {.curFile = retrievedFile, .curLine = line}

        For Each f In files
            Console.WriteLine("{0} contains {1}", f.curFile, f.curLine)
        Next
        Console.WriteLine("{0} lines found.", files.Count.ToString())

    End Sub

End Module

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

using System;
using System.IO;

namespace ConsoleApplication
{
    class Program
    {
        static void Main(string[] args)
        {
            string sourceDirectory = @"C:\source";
            string destinationDirectory = @"C:\destination";

            try
            {
                Directory.Move(sourceDirectory, destinationDirectory);
            }
            catch (Exception e)
            {
                Console.WriteLine(e.Message);
            }
        }
    }
}
open System.IO

let sourceDirectory = @"C:\source"
let destinationDirectory = @"C:\destination"

try
    Directory.Move(sourceDirectory, destinationDirectory)
with e ->
    printfn $"{e.Message}"
Imports System.IO

Module Module1

    Sub Main()
        Dim sourceDirectory As String = "C:\source"
        Dim destinationDirectory As String = "C:\destination"

        Try
            Directory.Move(sourceDirectory, destinationDirectory)
        Catch e As Exception
            Console.WriteLine(e.Message)
        End Try

    End Sub

End Module

Комментарии

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

  • Чтобы создать каталог, используйте один из CreateDirectory методов .

  • Чтобы удалить каталог, используйте один из Delete методов .

  • Чтобы получить или задать текущий каталог для приложения, используйте GetCurrentDirectory метод или SetCurrentDirectory .

  • Для управления DateTime информацией, связанной с созданием, доступом и записью каталога, используйте такие методы, как SetLastAccessTime и SetCreationTime.

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

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

Примечание

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

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

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

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

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

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

Чтобы затребовать разрешения для каталога и всех его подкаталогов, завершите строку пути символом разделителя каталогов. (Например, "C:\Temp\" предоставляет доступ к C:\Temp\ и всем его подкаталогам.) Чтобы запрашивать разрешения только для определенного каталога, завершите строку пути точкой. (Например, "C:\Temp\"." предоставляет доступ только к C:\Temp\, а не к его подкаталогам.)

В элементах, которые принимают searchPattern параметр, строка поиска может быть любым сочетанием литеральных символов и двух подстановочных знаков: * и ?. Этот параметр не распознает регулярные выражения. Дополнительные сведения см. в описании EnumerateDirectories(String, String) метода или любого другого метода, использующего searchPattern параметр .

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

Directory и DirectoryInfo не поддерживаются для использования в приложениях Магазина Windows. Сведения о доступе к файлам и папкам в приложениях Магазина Windows см. в статье Доступ к данным и файлам (приложения Магазина Windows).

Методы

CreateDirectory(String)

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

CreateDirectory(String, DirectorySecurity)

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

CreateDirectory(String, UnixFileMode)

Создает все каталоги и подкаталоги по указанному пути с указанными разрешениями, если они уже не существуют.

CreateSymbolicLink(String, String)

Создает символьную ссылку каталога, определяемую с помощью path , которая указывает на pathToTarget.

CreateTempSubdirectory(String)

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

Delete(String)

Удаляет пустой каталог по заданному пути.

Delete(String, Boolean)

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

EnumerateDirectories(String)

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

EnumerateDirectories(String, String)

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

EnumerateDirectories(String, String, EnumerationOptions)

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

EnumerateDirectories(String, String, SearchOption)

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

EnumerateFiles(String)

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

EnumerateFiles(String, String)

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

EnumerateFiles(String, String, EnumerationOptions)

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

EnumerateFiles(String, String, SearchOption)

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

EnumerateFileSystemEntries(String)

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

EnumerateFileSystemEntries(String, String)

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

EnumerateFileSystemEntries(String, String, EnumerationOptions)

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

EnumerateFileSystemEntries(String, String, SearchOption)

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

Exists(String)

Определяет, указывает ли заданный путь на существующий каталог на диске.

GetAccessControl(String)

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

GetAccessControl(String, AccessControlSections)

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

GetCreationTime(String)

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

GetCreationTimeUtc(String)

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

GetCurrentDirectory()

Получает текущий рабочий каталог приложения.

GetDirectories(String)

Возвращает имена подкаталогов (включая пути) в указанном каталоге.

GetDirectories(String, String)

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

GetDirectories(String, String, EnumerationOptions)

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

GetDirectories(String, String, SearchOption)

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

GetDirectoryRoot(String)

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

GetFiles(String)

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

GetFiles(String, String)

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

GetFiles(String, String, EnumerationOptions)

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

GetFiles(String, String, SearchOption)

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

GetFileSystemEntries(String)

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

GetFileSystemEntries(String, String)

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

GetFileSystemEntries(String, String, EnumerationOptions)

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

GetFileSystemEntries(String, String, SearchOption)

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

GetLastAccessTime(String)

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

GetLastAccessTimeUtc(String)

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

GetLastWriteTime(String)

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

GetLastWriteTimeUtc(String)

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

GetLogicalDrives()

Извлекает имена логических дисков на этом компьютере в формате "<буква> диска:\".

GetParent(String)

Извлекает родительский каталог, на который указывает абсолютный или относительный путь.

Move(String, String)

Перемещает файл или каталог со всем его содержимым в новое местоположение.

ResolveLinkTarget(String, Boolean)

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

SetAccessControl(String, DirectorySecurity)

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

SetCreationTime(String, DateTime)

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

SetCreationTimeUtc(String, DateTime)

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

SetCurrentDirectory(String)

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

SetLastAccessTime(String, DateTime)

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

SetLastAccessTimeUtc(String, DateTime)

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

SetLastWriteTime(String, DateTime)

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

SetLastWriteTimeUtc(String, DateTime)

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

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

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