Dieser Artikel wurde maschinell übersetzt. Bewegen Sie den Mauszeiger über die Sätze im Artikel, um den Originaltext anzuzeigen. Weitere Informationen
Übersetzung
Original
Dieser Artikel wurde noch nicht bewertet - Dieses Thema bewerten.

FileSystem.FileGet-Methode (Int32, Int32%, Int64)

Liest Daten aus einer geöffneten Datenträgerdatei in eine Variable ein. Das My-Feature bietet eine höhere Produktivität und Leistung bei Datei-E/A-Vorgängen als FileGet. Weitere Informationen finden Sie unter FileSystem.

Namespace:  Microsoft.VisualBasic
Assembly:  Microsoft.VisualBasic (in Microsoft.VisualBasic.dll)
public static void FileGet(
	int FileNumber,
	ref int Value,
	long RecordNumber
)

Parameter

FileNumber
Typ: System.Int32
Erforderlich. Eine beliebige gültige Dateinummer.
Value
Typ: System.Int32
Erforderlich. Der Name einer gültigen Variablen, in die Daten eingelesen werden.
RecordNumber
Typ: System.Int64
Optional. Datensatznummer (Dateien im Random-Modus) oder Bytenummer (Dateien im Binary-Modus), an der der Lesevorgang beginnt.
AusnahmeBedingung
ArgumentException

RecordNumber < 1 und nicht gleich -1.

IOException

FileNumber ist nicht vorhanden.

IOException

Dateimodus ist ungültig.

FileGet ist nur im Random-Modus und im Binary-Modus gültig.

Mit FileGet gelesene Daten werden normalerweise mit FilePut in eine Datei geschrieben.

Der erste Datensatz oder das erste Byte einer Datei hat die Position 1, der zweite Datensatz bzw. das zweite Byte die Position 2 usw. Wenn Sie RecordNumber nicht angeben, wird der Datensatz bzw. das Byte gelesen, der bzw. das auf die letzte FileGet-Funktion oderFilePut-Funktion folgt (oder auf den bzw. das die letzte Seek-Funktion zeigt).

SicherheitshinweisSicherheitshinweis

Treffen Sie beim Lesen von Daten aus Dateien nicht auf der Grundlage der Dateierweiterung Entscheidungen über den Dateiinhalt. So ist es zum Beispiel möglich, dass eine Datei mit dem Namen Form1.vb keine Visual Basic-Quelldatei ist.

Random-Modus

Für Dateien, die im Random-Modus geöffnet werden, gelten die folgenden Regeln:

  • Unterschreitet die Länge der zu lesenden Daten die in der RecordLength-Klausel der FileOpen-Funktion festgelegte Länge, so liest FileGet nachfolgende Datensätze trotzdem immer an der durch die Datensatzlänge festgelegten Grenze. Der Platz zwischen dem Ende eines Datensatzes und dem Anfang des nächsten Datensatzes wird mit dem bestehenden Inhalt des Dateipuffers aufgefüllt. Da die Länge der Fülldaten nicht mit Sicherheit bestimmt werden kann, sollten die Datensatzlänge und die Länge der eingelesenen Daten immer übereinstimmen.

  • Wenn die Variable, in die eingelesen wird, eine Zeichenfolge ist, liest FileGet standardmäßig einen 2-Byte-Deskriptor, der die Länge der Zeichenfolge enthält, und dann die Daten, die die Variable aufnimmt. Daher muss die in der RecordLength-Klausel der FileOpen-Funktion festgelegte Datensatzlänge mindestens 2 Bytes größer sein als die tatsächliche Länge der Zeichenfolge. In Visual Basic 6.0 und früheren Versionen werden Zeichenfolgen mit fester Länge unterstützt, für die beim Einlesen in eine Datei kein Längendeskriptor geschrieben wird. Wenn Sie eine Zeichenfolge ohne Deskriptor einlesen möchten, sollten Sie True an den StringIsFixedLength-Parameter übergeben, und die Zeichenfolge, die Sie einlesen, sollte die richtige Länge aufweisen.

  • Wenn es sich bei der eingelesenen Variablen um ein Array handelt, haben Sie die Möglichkeit, einen Deskriptor mit Größe und Dimensionen des Arrays einzulesen. Zum Schreiben des Deskriptors legen Sie für den ArrayIsDynamic-Parameter True fest. Beim Lesen des Array müssen Sie sich danach richten, wie das Array geschrieben wurde. Wenn es mit dem Deskriptor geschrieben wurde, müssen Sie den Deskriptor lesen. Wenn der Deskriptor nicht verwendet wird, richtet sich der Umfang des zu lesenden Inhalts nach der Größe und den Grenzen des Array, die an FileGet übergeben wurden.

    Der Deskriptor gibt den Rang des Arrays, die Größe und die Untergrenze jedes Ranges an. Seine Länge entspricht 2 plus 8 Mal die Anzahl der Dimensionen: (2 + 8 * NumberOfDimensions). Die durch den RecordLength-Parameter der FileOpen-Funktion angegebene Datensatzlänge muss größer oder gleich der Summe aller Bytes sein, die erforderlich sind, um die Daten des Arrays und den Arraydeskriptor zu schreiben. Die folgende Arraydeklaration erfordert z. B. 218 Bytes, wenn das Array auf einen Datenträger geschrieben wird.

    
    Dim MyArray(4, 9) As Integer
    
    
    

    Die 218 Bytes werden wie folgt verteilt:

    • 18 Bytes für den Deskriptor: (2 + 8 * 2)

    • 200 Bytes für die Daten: (5 * 10 * 4).

  • Wenn die eingelesene Variable einen anderen Typ, d. h. weder Zeichenfolge variabler Länge, noch Object, hat, liest FileGet nur die eigentlichen Variablendaten. Die in der RecordLength-Klausel der FileOpen-Funktion angegebene Datensatzlänge muss also mindestens so groß sein wie die Länge der einzulesenden Daten.

  • FileGet liest die Elemente von Strukturen so, als ob sie einzeln gelesen würden, jedoch ohne Fülldaten zwischen den Elementen. Auf dem Datenträger wird einem dynamischen Array eines benutzerdefinierten Typs (das mit FilePut geschrieben wurde) ein Deskriptor vorangestellt, dessen Länge sich aus der Summe von 2 plus die mit 8 multiplizierte Anzahl von Dimensionen ergibt: (2 + 8 * NumberOfDimensions). Die durch die RecordLength-Klausel in der FileOpen-Funktion angegebene Datensatzlänge muss größer oder gleich der Summe aller Bytes sein, die erforderlich sind, um die einzelnen Elemente zu lesen. Dies schließt alle Arrays und ihre Deskriptoren ein. Zeichenfolgenfelder in den Strukturen können mit dem VBFixedString-Attribut versehen werden, das die Größe der Zeichenfolge beim Schreiben auf den Datenträger angibt.

Binary-Modus

Für Dateien, die im Binary-Modus geöffnet wurden, gelten bis auf wenige Ausnahmen die meisten der Random-Modusregeln. Die folgenden Regeln für Dateien, die im Binary-Modus geöffnet werden, unterscheiden sich von den Regeln für den Random -Modus:

  • Die RecordLength-Klausel in der FileOpen-Funktion hat keine Auswirkungen. FileGet liest alle Variablen nacheinander vom Datenträger, d. h. ohne Zwischenräume zwischen Datensätzen aufzufüllen.

  • Bei jedem Array, das kein Array in einer Struktur ist, liest FileGet nur die Daten. Es wird kein Deskriptor gelesen.

  • FileGet liest Zeichenfolgen variabler Länge, die keine Elemente von Strukturen sind, ohne den Längendeskriptor von 2 Bytes zu erwarten. Daher entspricht die Anzahl gelesener Bytes der Zeichenanzahl in der Zeichenfolge.

    SicherheitshinweisSicherheitshinweis

    Das Lesen einer Datei mit der FileGet-Funktion erfordert Read-Zugriffsrechte aus der FileIOPermissionAccess-Enumeration.

.NET Framework

Unterstützt in: 4.5, 4, 3.5, 3.0, 2.0, 1.1, 1.0

.NET Framework Client Profile

Unterstützt in: 4, 3.5 SP1

Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (Server Core-Rolle wird nicht unterstützt), Windows Server 2008 R2 (Server Core-Rolle wird mit SP1 oder höher unterstützt; Itanium wird nicht unterstützt)

.NET Framework unterstützt nicht alle Versionen sämtlicher Plattformen. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen für .NET Framework.
Fanden Sie dies hilfreich?
(1500 verbleibende Zeichen)

Community-Beiträge

HINZUFÜGEN
© 2013 Microsoft. Alle Rechte vorbehalten.