FileStreamOptions.PreallocationSize Eigenschaft
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
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:
Feedback
https://aka.ms/ContentUserFeedback.
Bald verfügbar: Im Laufe des Jahres 2024 werden wir GitHub-Issues stufenweise als Feedbackmechanismus für Inhalte abbauen und durch ein neues Feedbacksystem ersetzen. Weitere Informationen finden Sie unterFeedback senden und anzeigen für