(0) exportieren Drucken
Alle erweitern
Dieser Artikel wurde maschinell übersetzt. Bewegen Sie den Mauszeiger über die Sätze im Artikel, um den Originaltext anzuzeigen. Weitere Informationen
Übersetzung
Original

FileSystem.FilePut-Methode (Int32, Byte, Int64)

Schreibt Daten aus einer Variablen in eine Datei auf einem Datenträger. Das My-Feature bietet eine höhere Produktivität und Leistung bei Datei-E/A-Vorgängen als FilePut. Weitere Informationen finden Sie unter FileSystem.

Namespace:  Microsoft.VisualBasic
Assembly:  Microsoft.VisualBasic (in Microsoft.VisualBasic.dll)

public static void FilePut(
	int FileNumber,
	byte Value,
	long RecordNumber
)

Parameter

FileNumber
Typ: System.Int32
Erforderlich. Eine beliebige gültige Dateinummer.
Value
Typ: System.Byte
Erforderlich. Gültiger Variablenname, der auf den Datenträger geschriebene Daten enthält.
RecordNumber
Typ: System.Int64
Optional. Datensatznummer (Dateien im Random-Modus) oder Bytenummer (Dateien im Binary-Modus), an der der Schreibvorgang beginnt.

AusnahmeBedingung
ArgumentException

RecordNumber < 1 und nicht gleich -1.

IOException

FileNumber ist nicht vorhanden.

IOException

Dateimodus ist ungültig.

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

Mit FilePut geschriebene Daten werden normalerweise mit FileGet aus einer Datei gelesen.

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 geschrieben, der bzw. das auf die letzte FileGet-Funktion oder FilePut-Funktion folgt oder auf den bzw. das die letzte Seek-Funktion zeigt.

Das StringIsFixedLength-Argument steuert, ob die Funktion Zeichenfolgen als variable oder feste Länge interpretiert. FilePut schreibt den Längendeskriptor nicht, wenn das Argument True ist. Wenn Sie für FilePut das Argument StringIsFixedLength = True verwenden, müssen Sie dasselbe Argument auch für FileGet verwenden und außerdem sicherstellen, dass die Zeichenfolge mit der erwarteten Länge initialisiert wird.

Random-Modus

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

  • Unterschreitet die Länge der geschriebenen Daten die in der RecordLength-Klausel der FileOpen-Funktion festgelegte Länge, so beginnen mit FilePut geschriebene 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, sollte die Datensatzlänge mit der Länge der geschriebenen Daten immer genau übereinstimmen. Wenn die Länge der geschriebenen Daten die in der RecordLength-Klausel der FileOpen-Funktion festgelegte Länge überschreitet, wird eine Ausnahme ausgelöst.

  • Wird eine Zeichenfolgenvariable geschrieben, schreibt FilePut einen 2-Byte-Deskriptor mit der Länge der Zeichenfolge, gefolgt vom eigentlichen Inhalt der Variablen. 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.

  • Wenn es sich bei der geschriebenen Variablen um ein Objekt mit einem numerischen Typ handelt, werden von FilePut zwei Bytes, die den VarType des Objekts identifizieren, und anschließend die Variable geschrieben. Bei einem Objekt, das eine ganze Zahl enthält, schreibt FilePut z. B. sechs Bytes: zwei Bytes zur Identifizierung des Objekts als VarType(3) (Integer) und vier Bytes mit den Daten. Die im RecordLength-Parameter der FileOpen-Funktion angegebene Datensatzlänge muss also mindestens zwei Bytes größer sein als die tatsächlich zum Speichern der Variablen benötigte Anzahl von Bytes.

  • Wenn es sich bei der geschriebenen Variablen um ein Objekt mit einer Zeichenfolge handelt, schreibt FilePut einen 2-Byte-Deskriptor, der den VarType(8) des Objekts identifiziert, einen 2-Byte-Deskriptor mit der Längenangabe der Zeichenfolge und anschließend die Zeichenfolgendaten. Daher muss die im RecordLength-Parameter der FileOpen-Funktion festgelegte Datensatzlänge mindestens 4 Bytes größer sein als die tatsächliche Länge der Zeichenfolge. Wenn Sie eine Zeichenfolge ohne Deskriptor ablegen möchten, sollten Sie True an den StringIsFixedLength-Parameter übergeben, und die Zeichenfolge, in die Sie einlesen, sollte die richtige Länge aufweisen.

  • Wenn es sich bei der geschriebenen Variablen um ein Array handelt, haben Sie die Möglichkeit, einen Deskriptor mit Größe und Dimensionen des Arrays zu schreiben. In Visual Basic 6.0 und früheren Versionen wurde ein Dateideskriptor nur für dynamische Arrays und nicht für Arrays mit festgelegter Größe geschrieben. In Visual Basic 2005 wird der Deskriptor standardmäßig nicht geschrieben. Zum Schreiben des Deskriptors legen Sie für den ArrayIsDynamic-Parameter True fest. Beim Schreiben des Arrays muss festgelegt werden, wie es gelesen wird. Für Arrays, die mit Deskriptor gelesen werden, muss ein Deskriptor geschrieben werden. 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 die RecordLength-Klausel 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
    
    
    
  • Wenn die geschriebene Variable einen anderen Typ, d. h. weder Zeichenfolge variabler Länge noch Objekt, hat, schreibt FilePut nur die eigentlichen Daten der Variablen. Die in der RecordLength-Klausel der FileOpen-Funktion angegebene Datensatzlänge muss also mindestens so groß sein wie die Länge der geschriebenen Daten.

  • FilePut schreibt die Elemente von Strukturen so, als ob sie einzeln angelegt würden, jedoch ohne Fülldaten zwischen den Elementen. 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.

    HinweisHinweis

    Zeichenfolgenfelder, die mehr Bytes enthalten als durch das VBFixedString-Attribut angegeben, werden beim Schreiben auf den Datenträger abgeschnitten.

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. FilePut schreibt alle Variablen nacheinander auf einen Datenträger, d. h. ohne Zwischenräume zwischen Datensätzen aufzufüllen.

  • Bei jedem Array, das kein Array in einer Struktur ist, schreibt FilePut nur die Daten. Es wird kein Deskriptor geschrieben.

  • FilePut schreibt Zeichenfolgen variabler Länge, die keine Elemente in Strukturen sind, ohne den 2 Bytes großen Längendeskriptor. Daher entspricht die Anzahl geschriebener Bytes der Zeichenanzahl in der Zeichenfolge. Die folgenden Anweisungen schreiben z. B. 11 Bytes in die Datei mit der Dateinummer 1:

    
    Dim hellow As String = "Hello World"
    FilePut(1, hellow)
    
    
    
  • Um Daten in eine Datei mithilfe der FilePut-Funktion schreiben zu können, ist Write-Zugriff der FileIOPermissionAccess-Enumeration erforderlich.

In diesem Beispiel werden mit der FilePut-Funktion Daten in eine Datei geschrieben. Insgesamt werden fünf Datensätze der Struktur Person in die Datei geschrieben.


Structure Person
    Public ID As Integer
    Public Name As String
End Structure

Sub WriteData()
    Dim PatientRecord As Person
    Dim recordNumber As Integer
    '    Open file for random access.
    FileOpen(1, "C:\TESTFILE.txt", OpenMode.Binary)
    ' Loop 5 times.
    For recordNumber = 1 To 5
        ' Define ID.
        PatientRecord.ID = recordNumber
        ' Create a string.
        PatientRecord.Name = "Name " & recordNumber
        ' Write record to file.
        FilePut(1, PatientRecord)
    Next recordNumber
    FileClose(1)
End Sub


.NET Framework

Unterstützt in: 4.5.2, 4.5.1, 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 Phone 8.1, Windows Phone 8, Windows 8.1, Windows Server 2012 R2, 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.

Community-Beiträge

HINZUFÜGEN
Anzeigen:
© 2014 Microsoft