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 класса.
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 |
Получает часть расширения имени файла, в том числе в начале |
| 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 Используйте свойства для полного пути или имени файла или каталога вместо этого метода. |