Teilen über


FileStreamOptions.PreallocationSize Eigenschaft

Definition

Die anfängliche Zuordnungsgröße in Byte für die Datei. Ein positiver Wert ist nur wirksam, wenn eine reguläre Datei erstellt oder überschrieben wird (Create oder CreateNew). Negative Werte sind nicht zulässig. In anderen Fällen (einschließlich des Standardwerts 0) wird er ignoriert. Dieser Wert ist ein Hinweis und keine starke Garantie. Dies wird unter WebAssembly (WASM) und FreeBSD nicht unterstützt (der Wert wird ignoriert). Für Windows, Linux und macOS versuchen wir, den Speicherplatz vorab zuzuweisen, um die angeforderte Zuordnungsgröße auszufüllen. Wenn sich dies als unmöglich erweist, löst der Vorgang eine Ausnahme aus. Die endgültige Dateilänge (EOF) wird durch die Anzahl der in die Datei geschriebenen Bytes bestimmt.

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

Eigenschaftswert

Eine nicht negative Zahl, die die anfängliche Zuordnungsgröße in Bytes für die Datei darstellt.

Ausnahmen

Wenn value negativ ist.

Beispiele

Im folgenden Codebeispiel wird veranschaulicht, wie beim Arbeiten mit FileStream -Objekten verwendet PreallocationSize wird:

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

Hinweise

PreallocationSize kann nur für den Schreibmodus angefordert werden (Access muss auf Writefestgelegt werden) und beim Erstellen neuer Dateien (Mode muss auf Create oder auf CreateNewfestgelegt werden). Andernfalls löst der FileStream Konstruktor eine Ausnahme aus.

Wenn das Betriebssystem, die Plattform oder das Dateisystem keine Vorabzuordnung unterstützt, PreallocationSize wird ignoriert. Dies ist für Web Assembly (WASM) und FreeBSD der Fall.

Wenn nicht genügend Speicherplatz vorhanden ist oder das Dateisystem Dateien mit einer bestimmten Größe nicht unterstützt (Beispiel: 5 GB Datei auf FAT32), wird eine Ausnahme ausgelöst.

Die Dateilänge wird durch die Anzahl von Bytes bestimmt, die in die Datei geschrieben wurden.

Wenn die Datei geschlossen wird und nicht der gesamte zugeordnete Speicherplatz in geschrieben wird, ist dies plattformabhängig, was mit dem verbleibenden Speicherplatz geschieht. Unter Windows ist dieser Speicherplatz nicht mehr für die Datei reserviert. Auf anderen Plattformen, z. B. Linux und macOS, bleibt sie der Datei zugeordnet.

Angenommen, 2 GB ist für eine Datei vorab zugeordnet, aber nur 1 GB wird geschrieben. Nach dem Schließen der Datei beträgt die Dateilänge unter allen Betriebssystemen 1 GB. Unter Windows beträgt die zugeordnete Größe ebenfalls 1 GB, aber unter Linux und macOS beträgt die zugeordnete Größe immer noch 2 GB.

Es ist zulässig, mehr als das zu schreiben, was ursprünglich vorab zugewiesen wurde. Solange genügend Speicherplatz auf dem Datenträger vorhanden ist, sollte der Vorgang erfolgreich sein.

Gilt für: