FileSystem.FilePutObject(Int32, Object, Int64) Metod
Definition
Viktigt
En del information gäller för förhandsversionen av en produkt och kan komma att ändras avsevärt innan produkten blir allmänt tillgänglig. Microsoft lämnar inga garantier, uttryckliga eller underförstådda, avseende informationen som visas här.
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
FileOpeniRecordLengthfunktionen skriverFilePutObjectdu 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 iRecordLengthFileOpenfunktionen genereras ett undantag.Om variabeln som skrivs är ett objekt som innehåller en numerisk typ skriver
FilePutObjectdu två byte som identifierarVarTypeobjektet och skriver sedan variabeln. När du till exempel skriver ett objekt som innehåller ett heltalFilePutObjectskriver du sex byte: två byte som identifierar objektet somVarType(3)(Integer) och fyra byte som innehåller data. Postlängden som anges av parameternRecordLengthFileOpeni 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
FilePutObjectdu en tvåbytesbeskrivning som identifierarVarType(8)objektets, en tvåbytesbeskrivning som anger längden på strängen och skriver sedan strängdata. Postlängden som anges av parameternRecordLengthFileOpeni 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 skickaTruetill parameternStringIsFixedLengthoch 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
RecordLengthsom anges av satsen iFileOpenfunktionen 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:
-
RecordLengthSatsen iFileOpenfunktionen har ingen effekt.FilePutObjectskriver alla variabler till disken sammanhängande, dvs. utan utfyllnad mellan poster.