FileSystemAclExtensions.Create Метод

Определение

Перегрузки

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

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

Create(FileInfo, FileMode, FileSystemRights, FileShare, Int32, FileOptions, FileSecurity)

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

Create(DirectoryInfo, DirectorySecurity)

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

public:
[System::Runtime::CompilerServices::Extension]
 static void Create(System::IO::DirectoryInfo ^ directoryInfo, System::Security::AccessControl::DirectorySecurity ^ directorySecurity);
public static void Create(this System.IO.DirectoryInfo directoryInfo, System.Security.AccessControl.DirectorySecurity directorySecurity);
static member Create : System.IO.DirectoryInfo * System.Security.AccessControl.DirectorySecurity -> unit
<Extension()>
Public Sub Create (directoryInfo As DirectoryInfo, directorySecurity As DirectorySecurity)

Параметры

directoryInfo
DirectoryInfo

Каталог, который еще не существует, будет создан методом.

directorySecurity
DirectorySecurity

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

Исключения

directoryInfo или directorySecurity есть null.

Не удалось найти часть пути.

Доступ к пути запрещен.

Примеры

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

using System.IO;
using System.Runtime.Versioning;
using System.Security.AccessControl;
using System.Security.Principal;

namespace MyNamespace
{
    public class MyClassCS
    {
        // Attribute to address CA1416 warning:
        // System.IO.FileSystem.AccessControl APIs are  only available on Windows
        [SupportedOSPlatform("windows")]
        static void Main()
        {
            // Create the file security object

            SecurityIdentifier identity = new SecurityIdentifier(
                WellKnownSidType.BuiltinUsersSid, // This maps to "Everyone" user group in Windows
                null); // null is OK for this particular user group. For others, a non-empty value might be required
            FileSystemAccessRule accessRule = new FileSystemAccessRule(identity, FileSystemRights.FullControl, AccessControlType.Allow);

            DirectorySecurity expectedSecurity = new DirectorySecurity();
            expectedSecurity.AddAccessRule(accessRule);

            // Make sure the directory does not exist, then create it

            string dirPath = Path.Combine(Path.GetTempPath(), "directoryToCreate");
            DirectoryInfo dirInfo = new DirectoryInfo(dirPath);
            if (dirInfo.Exists)
            {
                dirInfo.Delete(recursive: true);
            }

            dirInfo.Create(expectedSecurity);
        }
    }
}

Комментарии

Этот метод расширения был добавлен в .NET Core для предоставления функциональных возможностей, предоставляемых методом DirectoryInfo.Create(DirectorySecurity) .NET Framework.

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

Create(FileInfo, FileMode, FileSystemRights, FileShare, Int32, FileOptions, FileSecurity)

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

public:
[System::Runtime::CompilerServices::Extension]
 static System::IO::FileStream ^ Create(System::IO::FileInfo ^ fileInfo, System::IO::FileMode mode, System::Security::AccessControl::FileSystemRights rights, System::IO::FileShare share, int bufferSize, System::IO::FileOptions options, System::Security::AccessControl::FileSecurity ^ fileSecurity);
public static System.IO.FileStream Create(this System.IO.FileInfo fileInfo, System.IO.FileMode mode, System.Security.AccessControl.FileSystemRights rights, System.IO.FileShare share, int bufferSize, System.IO.FileOptions options, System.Security.AccessControl.FileSecurity? fileSecurity);
public static System.IO.FileStream Create(this System.IO.FileInfo fileInfo, System.IO.FileMode mode, System.Security.AccessControl.FileSystemRights rights, System.IO.FileShare share, int bufferSize, System.IO.FileOptions options, System.Security.AccessControl.FileSecurity fileSecurity);
static member Create : System.IO.FileInfo * System.IO.FileMode * System.Security.AccessControl.FileSystemRights * System.IO.FileShare * int * System.IO.FileOptions * System.Security.AccessControl.FileSecurity -> System.IO.FileStream
<Extension()>
Public Function Create (fileInfo As FileInfo, mode As FileMode, rights As FileSystemRights, share As FileShare, bufferSize As Integer, options As FileOptions, fileSecurity As FileSecurity) As FileStream

Параметры

fileInfo
FileInfo

Файл, который еще не существует, который будет создан методом.

mode
FileMode

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

rights
FileSystemRights

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

share
FileShare

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

bufferSize
Int32

Количество байтов, буферизованное для операций чтения и записи в файл.

options
FileOptions

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

fileSecurity
FileSecurity

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

Возвращаемое значение

Поток файлов для только что созданного файла.

Исключения

Недопустимое rights сочетание mode .

fileInfo или fileSecurity есть null.

mode или share выходит за пределы их юридического диапазона перечисления.

–или–

bufferSize не является положительным числом.

Не удалось найти часть пути.

Произошла ошибка ввода-вывода.

Доступ к пути запрещен.

Примеры

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

using System;
using System.IO;
using System.Runtime.Versioning;
using System.Security.AccessControl;
using System.Security.Principal;
using System.Text;

namespace MyNamespace
{
    public class MyClassCS
    {
        // Attribute to address CA1416 warning:
        // System.IO.FileSystem.AccessControl APIs are  only available on Windows
        [SupportedOSPlatform("windows")]
        static void Main()
        {
            // Create the file security object

            var identity = new SecurityIdentifier(WellKnownSidType.BuiltinUsersSid, null);
            var accessRule = new FileSystemAccessRule(identity, FileSystemRights.FullControl, AccessControlType.Allow);

            var security = new FileSecurity();
            security.AddAccessRule(accessRule);

            // Make sure the file does not exist, or FileMode.CreateNew will throw

            string filePath = Path.Combine(Path.GetTempPath(), "temp.txt");
            var fileInfo = new FileInfo(filePath);
            if (fileInfo.Exists)
            {
                fileInfo.Delete();
            }

            // Create the file with the specified security and write some text

            using (FileStream stream = fileInfo.Create(
                FileMode.CreateNew,
                FileSystemRights.FullControl,
                FileShare.ReadWrite,
                4096, // Default buffer size
                FileOptions.None,
                security))
            {
                string text = "Hello world!";
                byte[] writeBuffer = new UTF8Encoding(encoderShouldEmitUTF8Identifier: true).GetBytes(text);

                stream.Write(writeBuffer, 0, writeBuffer.Length);
            } // Dispose flushes the file to disk
        }
    }
}

Комментарии

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

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