Bagikan melalui


FileStreamOptions.PreallocationSize Properti

Definisi

Ukuran alokasi awal dalam byte untuk file. Nilai positif hanya efektif ketika file reguler sedang dibuat atau ditimpa (Create atau CreateNew). Nilai negatif tidak diperbolehkan. Dalam kasus lain (termasuk nilai 0 default), nilai tersebut diabaikan. Nilai ini adalah petunjuk dan bukan jaminan yang kuat. Ini tidak didukung pada Web Assembly (WASM) dan FreeBSD (nilainya diabaikan). Untuk Windows, Linux, dan macOS, kami akan mencoba melakukan pra-alokasi ruang disk untuk mengisi ukuran alokasi yang diminta. Jika ternyata tidak mungkin, operasi akan melemparkan pengecualian. Panjang file akhir (EOF) akan ditentukan oleh jumlah byte yang ditulis ke file.

public:
 property long PreallocationSize { long get(); void set(long value); };
public long PreallocationSize { get; set; }
member this.PreallocationSize : int64 with get, set
Public Property PreallocationSize As Long

Nilai Properti

Angka non-negatif yang menunjukkan ukuran alokasi awal dalam byte untuk file.

Pengecualian

Ketika value negatif.

Contoh

Contoh kode berikut menunjukkan cara menggunakan PreallocationSize saat bekerja dengan FileStream objek:

using System.IO;

public static class PreallocationSizeExample
{
    public static void Main()
    {
        string destinationPath = "destination.dll";

        var openForReading = new FileStreamOptions { Mode = FileMode.Open };
        using var source = new FileStream(typeof(PreallocationSizeExample).Assembly.Location, openForReading);

        var createForWriting = new FileStreamOptions
        {
            Mode = FileMode.CreateNew,
            Access = FileAccess.Write,
            PreallocationSize = source.Length // specify size up-front
        };
        using var destination = new FileStream(destinationPath, createForWriting);

        source.CopyTo(destination); // copies the contents of the assembly file into the destination file
    }
}
Imports System.IO

Module PreallocationSizeExample

    Sub Main()

        Dim destinationPath As String = "destination.dll"
        Dim openForReading = New FileStreamOptions With {
            .Mode = FileMode.Open
        }

        Using source = New FileStream(GetType(PreallocationSizeExample).Assembly.Location, openForReading)

            Dim createForWriting = New FileStreamOptions With {
                .Mode = FileMode.CreateNew,
                .Access = FileAccess.Write,
                .PreallocationSize = source.Length ' specify size up-front
            }

            Using destination = New FileStream(destinationPath, createForWriting)
                source.CopyTo(destination) ' copies the contents of the assembly file into the destination file
            End Using

        End Using

    End Sub

End Module

Keterangan

PreallocationSize hanya dapat diminta untuk mode tulis (Access harus diatur ke Write) dan saat membuat file baru (Mode harus diatur ke atau Create ke CreateNew). Jika tidak, FileStream konstruktor akan melemparkan pengecualian.

Jika sistem operasi, platform, atau sistem file tidak mendukung pra-alokasi, maka PreallocationSize diabaikan. Ini adalah kasus untuk Web Assembly (WASM) dan FreeBSD.

Jika ruang disk tidak cukup atau sistem file tidak mendukung file dengan ukuran tertentu (misalnya: file 5 GB pada FAT32), pengecualian akan dilemparkan.

Panjang file ditentukan oleh berapa banyak byte yang ditulis ke file.

Ketika file ditutup dan tidak semua ruang yang dialokasikan ditulis, apa yang terjadi pada ruang yang tersisa tergantung pada platform. Pada Windows, ruang ini tidak lagi dicadangkan untuk file. Pada platform lain, seperti Linux dan macOS, platform tersebut tetap dialokasikan ke file.

Misalnya, asumsikan 2 GB telah dialokasikan sebelumnya untuk file, tetapi hanya 1 GB yang ditulis. Setelah menutup file, panjang file adalah 1 GB pada semua sistem operasi. Di Windows, ukuran yang dialokasikan juga 1 GB, tetapi pada Linux dan macOS, ukuran yang dialokasikan masih 2 GB.

Diperbolehkan untuk menulis lebih dari apa yang awalnya dialokasikan sebelumnya. Selama ada cukup ruang disk, operasi akan berhasil.

Berlaku untuk