FileSystemAclExtensions.Create 메서드

정의

오버로드

Name Description
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

파일에 대한 액세스 제어 및 감사 보안을 결정하는 개체입니다.

반품

새로 만든 파일에 대한 파일 스트림입니다.

예외

rightsmode 조합이 잘못되었습니다.

fileInfo 또는 fileSecurity .입니다 null.

mode 또는 share 법적 열거형 범위를 벗어났습니다.

-또는-

bufferSize 가 양수가 아닌 경우

경로의 일부를 찾을 수 없습니다.

I/O 오류가 발생했습니다.

경로에 대한 액세스가 거부되었습니다.

예제

다음 코드 예제에서는 모든 보안 특성을 명시적으로 지정하여 사용자의 임시 폴더 내에 새 텍스트 파일을 만듭니다.

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에 추가되어 제공된 기능을 가져옵니다.

적용 대상