Bagikan melalui


FileSystemAclExtensions.Create Metode

Definisi

Overload

Create(DirectoryInfo, DirectorySecurity)

Membuat direktori baru, memastikannya dibuat dengan keamanan direktori yang ditentukan. Jika direktori sudah ada, tidak ada yang dilakukan.

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

Membuat aliran file baru, memastikannya dibuat dengan properti dan pengaturan keamanan yang ditentukan.

Create(DirectoryInfo, DirectorySecurity)

Membuat direktori baru, memastikannya dibuat dengan keamanan direktori yang ditentukan. Jika direktori sudah ada, tidak ada yang dilakukan.

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)

Parameter

directoryInfo
DirectoryInfo

Direktori yang belum ada yang akan dibuat oleh metode .

directorySecurity
DirectorySecurity

Kontrol akses dan keamanan audit untuk direktori.

Pengecualian

directoryInfo atau directorySecurity adalah null.

Tidak dapat menemukan bagian dari jalur.

Akses ke jalur ditolak.

Contoh

Contoh kode berikut membuat direktori baru di dalam folder sementara pengguna dengan atribut keamanan direktori yang ditentukan:

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

Keterangan

Metode ekstensi ini ditambahkan ke .NET Core untuk membawa fungsionalitas yang disediakan oleh DirectoryInfo.Create(DirectorySecurity) .NET Framework metode.

Berlaku untuk

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

Membuat aliran file baru, memastikannya dibuat dengan properti dan pengaturan keamanan yang ditentukan.

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

Parameter

fileInfo
FileInfo

File yang belum ada yang akan dibuat oleh metode .

mode
FileMode

Salah satu nilai enumerasi yang menentukan bagaimana sistem operasi harus membuka file.

rights
FileSystemRights

Salah satu nilai enumerasi yang menentukan hak akses untuk digunakan saat membuat aturan akses dan audit.

share
FileShare

Salah satu nilai enumerasi untuk mengontrol jenis akses objek aliran file lain dapat memiliki ke file yang sama.

bufferSize
Int32

Jumlah byte yang di-buffer untuk dibaca dan ditulis ke file.

options
FileOptions

Salah satu nilai enumerasi yang menjelaskan cara membuat atau menimpa file.

fileSecurity
FileSecurity

Objek yang menentukan kontrol akses dan keamanan audit untuk file.

Mengembalikan

Aliran file untuk file yang baru dibuat.

Pengecualian

Kombinasi rights dan mode tidak valid.

fileInfo atau fileSecurity adalah null.

mode atau share berada di luar jangkauan enum hukum mereka.

-atau-

bufferSize bukan angka positif.

Tidak dapat menemukan bagian dari jalur.

Terjadi kesalahan I/O.

Akses ke jalur ditolak.

Contoh

Contoh kode berikut membuat file teks baru di dalam folder sementara pengguna, secara eksplisit menentukan semua atribut keamanan:

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

Keterangan

Metode ekstensi ini ditambahkan ke .NET Core untuk membawa fungsionalitas yang disediakan oleh:

Berlaku untuk