FileSystemAclExtensions.Create Yöntem

Tanım

Aşırı Yüklemeler

Create(DirectoryInfo, DirectorySecurity)

Belirtilen dizin güvenliğiyle oluşturulduğundan emin olarak yeni bir dizin oluşturur. Dizin zaten varsa hiçbir işlem yapılmaz.

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

Belirtilen özellikler ve güvenlik ayarlarıyla oluşturulduğundan emin olarak yeni bir dosya akışı oluşturur.

Create(DirectoryInfo, DirectorySecurity)

Belirtilen dizin güvenliğiyle oluşturulduğundan emin olarak yeni bir dizin oluşturur. Dizin zaten varsa hiçbir işlem yapılmaz.

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)

Parametreler

directoryInfo
DirectoryInfo

Henüz var olmayan ve yöntemi tarafından oluşturulacak bir dizin.

directorySecurity
DirectorySecurity

Dizinin erişim denetimi ve denetim güvenliği.

Özel durumlar

directoryInfo veya directorySecurity şeklindedir null.

Yolun bir bölümü bulunamadı.

Yola erişim reddedildi.

Örnekler

Aşağıdaki kod örneği, belirtilen dizin güvenlik öznitelikleriyle kullanıcının geçici klasörünün içinde yeni bir dizin oluşturur:

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

Açıklamalar

Bu uzantı yöntemi, DirectoryInfo.İçerik Oluşturucu tarafından sağlanan işlevselliği getirmek için .NET Core'a eklendi (DirectorySecurity) .NET Framework yöntemi.

Şunlara uygulanır

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

Belirtilen özellikler ve güvenlik ayarlarıyla oluşturulduğundan emin olarak yeni bir dosya akışı oluşturur.

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

Parametreler

fileInfo
FileInfo

Henüz var olmayan ve yöntemi tarafından oluşturulacak bir dosya.

mode
FileMode

İşletim sisteminin bir dosyayı nasıl açması gerektiğini belirten numaralandırma değerlerinden biri.

rights
FileSystemRights

Erişim ve denetim kuralları oluştururken kullanılacak erişim haklarını tanımlayan numaralandırma değerlerinden biri.

share
FileShare

Diğer dosya akışı nesnelerinin aynı dosyaya erişim türünü denetlemeye yönelik numaralandırma değerlerinden biri olabilir.

bufferSize
Int32

Dosyaya okuma ve yazma işlemleri için arabelleğe alınan bayt sayısı.

options
FileOptions

Dosyanın nasıl oluşturulacağını veya üzerine yazıldığını açıklayan numaralandırma değerlerinden biri.

fileSecurity
FileSecurity

Dosya için erişim denetimini ve denetim güvenliğini belirleyen bir nesne.

Döndürülenler

Yeni oluşturulan dosya için bir dosya akışı.

Özel durumlar

rights ve mode bileşimi geçersiz.

fileInfo veya fileSecurity şeklindedir null.

mode veya share yasal sabit listesi aralığının dışındadır.

-veya-

bufferSize pozitif bir sayı değildir.

Yolun bir bölümü bulunamadı.

G/ç hatası oluştu.

Yola erişim reddedildi.

Örnekler

Aşağıdaki kod örneği, kullanıcının geçici klasöründe tüm güvenlik özniteliklerini açıkça belirterek yeni bir metin dosyası oluşturur:

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

Açıklamalar

Bu uzantı yöntemi, tarafından sağlanan işlevselliği getirmek için .NET Core'a eklendi:

Şunlara uygulanır