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) |
Создает символьную ссылку каталога, определяемую с помощью |
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). |