FileStreamOptions.PreallocationSize Eigenschaft

Definition

Die anfängliche Zuordnungsgröße in Bytes 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. Es wird nicht von Web Assembly (WASM) und FreeBSD unterstützt (der Wert wird ignoriert). Für Windows, Linux und macOS versuchen wir, den Speicherplatz vorab zuzuordnen, 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 Bytes bestimmt, die in die Datei geschrieben werden.

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 die Verwendung PreallocationSize beim Arbeiten mit FileStream Objekten veranschaulicht:

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 muss aufMode oder CreateCreateNewfestgelegt werden. Andernfalls löst der FileStream Konstruktor eine Ausnahme aus.

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

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

Die Dateilänge wird dadurch bestimmt, wie viele Bytes in die Datei geschrieben wurden.

Wenn die Datei geschlossen ist und nicht der gesamte zugewiesene Speicherplatz in geschrieben wird, ist das, was mit dem verbleibenden Speicherplatz geschieht, plattformabhängig. 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 sind 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 zugewiesene Größe ebenfalls 1 GB, aber unter Linux und macOS beträgt die zugewiesene 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 vorhanden ist, sollte der Vorgang erfolgreich ausgeführt werden.

Gilt für: