FileSystem.FilePutObject(Int32, Object, Int64) Metod

Definition

Skriver data från en variabel till en diskfil. Funktionen My ger bättre produktivitet och prestanda i fil-I/O-åtgärder än FilePutObject. Mer information finns i FileSystem.

public static void FilePutObject(int FileNumber, object Value, long RecordNumber = -1);
static member FilePutObject : int * obj * int64 -> unit
Public Sub FilePutObject (FileNumber As Integer, Value As Object, Optional RecordNumber As Long = -1)

Parametrar

FileNumber
Int32

Required. Ett giltigt filnummer.

Value
Object

Required. Giltigt variabelnamn som innehåller data som skrivits till disk.

RecordNumber
Int64

Optional. Postnummer (Random lägesfiler) eller bytenummer (Binary lägesfiler) där skrivandet startar.

Exempel

I det här exemplet används funktionen FilePutObject för att skriva en sträng till en fil.

Sub WriteData()
    Dim text As String = "test"
    FileOpen(1, "test.bin", OpenMode.Binary)
    FilePutObject(1, text)
    FileClose(1)
End Sub

Kommentarer

Funktionen FilePutObject används i stället för FilePut för att undvika tvetydigheter vid kompileringstiden om typen Object skickas i stället för en annan typ, till exempel Integer, Long, Shortoch så vidare.

FilePutObject skriver och läser deskriptorer som beskriver objektet. Om du tänker skriva ut Variant typen FilePutObject krävs. Om du är osäker, om du använder ett -objekt för den andra parametern, rekommenderar vi att du alltid använder FilePutObject och FileGetObject.

FilePutObject är endast giltigt i Random och Binary läge.

Data som skrivs med FilePutObject läse vanligtvis från en fil med hjälp FileGetObjectav .

Den första posten eller byte i en fil är på plats 1, den andra posten eller byte är på plats 2 och så vidare. Om du utelämnar RecordNumberFilePutObject skriver du nästa post eller byte efter den senaste FileGetObject eller FilePutObject funktionen (eller posten eller bytet som pekades på av den senaste Seek funktionen).

Argumentet StringIsFixedLength styr om funktionen tolkar strängar som variabel eller fast längd. FilePutObject skriver inte längdbeskrivningen när argumentet är True. Om du använder StringIsFixedLength = True med FilePutObjectmåste du göra samma sak med FileGetObject, och du måste också se till att strängen initieras till den förväntade längden.

Slumpmässigt läge

För filer som öppnas i Random läge gäller följande regler:

  • Om längden på de data som skrivs är mindre än den längd som anges i -satsen FileOpen i RecordLength funktionen skriver FilePutObject du efterföljande poster på postlängdsgränser. Utrymmet mellan slutet av en post och början av nästa post är vadderat med det befintliga innehållet i filbufferten. Eftersom mängden utfyllnadsdata inte kan fastställas exakt är det i allmänhet en bra idé att se till att postlängden matchar längden på de data som skrivs. Om längden på de data som skrivs är större än den längd som anges i -satsen i RecordLengthFileOpen funktionen genereras ett undantag.

  • Om variabeln som skrivs är ett objekt som innehåller en numerisk typ skriver FilePutObject du två byte som identifierar VarType objektet och skriver sedan variabeln. När du till exempel skriver ett objekt som innehåller ett heltal FilePutObject skriver du sex byte: två byte som identifierar objektet som VarType(3) (Integer) och fyra byte som innehåller data. Postlängden som anges av parametern RecordLengthFileOpen i funktionen måste vara minst två byte större än det faktiska antalet byte som krävs för att lagra variabeln.

  • Om variabeln som skrivs är ett objekt som innehåller en sträng skriver FilePutObject du en tvåbytesbeskrivning som identifierar VarType(8) objektets, en tvåbytesbeskrivning som anger längden på strängen och skriver sedan strängdata. Postlängden som anges av parametern RecordLengthFileOpen i funktionen måste vara minst fyra byte större än strängens faktiska längd. Om du vill placera en sträng utan beskrivningen bör du skicka True till parametern StringIsFixedLength och strängen som du läser in i ska vara rätt längd.

  • Om variabeln som skrivs är en matris måste postlängden RecordLength som anges av satsen i FileOpen funktionen vara större än eller lika med summan av alla byte som krävs för att skriva matrisdata och matrisbeskrivningen. Beskrivningen anger matrisens rangordning, storlek och de lägre gränserna för varje rangordning. Dess längd är lika med 2 plus 8 gånger antalet dimensioner: (2 + 8 * NumberOfDimensions).

Binärt läge

För filer som öppnas i Binary läge gäller alla Random lägesregler, förutom:

  • RecordLength Satsen i FileOpen funktionen har ingen effekt. FilePutObject skriver alla variabler till disken sammanhängande, dvs. utan utfyllnad mellan poster.

Gäller för

Se även