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 또는 directorySecuritynull인 경우

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

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

예제

다음 코드 예제에서는 지정된 디렉터리 보안 특성을 사용하여 사용자의 임시 폴더 내에 새 디렉터리를 만듭니다.

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);
        }
    }
}

설명

이 확장 메서드는 DirectoryInfo.Create 제공된 기능을 가져오기 위해 .NET Core에 추가되었습니다.(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 또는 fileSecuritynull인 경우

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에 추가되었습니다.

적용 대상