FileSystem.FilePutObject(Int32, Object, Int64) Methode
Definitie
Belangrijk
Bepaalde informatie heeft betrekking op een voorlopige productversie die aanzienlijk kan worden gewijzigd voordat deze wordt uitgebracht. Microsoft biedt geen enkele expliciete of impliciete garanties met betrekking tot de informatie die hier wordt verstrekt.
Hiermee schrijft u gegevens van een variabele naar een schijfbestand. De My functie biedt u betere productiviteit en prestaties in bestands-I/O-bewerkingen dan FilePutObject. Zie FileSystem voor meer informatie.
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)
Parameters
- FileNumber
- Int32
Required. Elk geldig bestandsnummer.
- Value
- Object
Required. Geldige variabelenaam die gegevens bevat die naar schijf zijn geschreven.
- RecordNumber
- Int64
Optional. Recordnummer (Random modusbestanden) of bytenummer (Binary modusbestanden) waarop het schrijven begint.
Voorbeelden
In dit voorbeeld wordt de FilePutObject functie gebruikt om een tekenreeks naar een bestand te schrijven.
Sub WriteData()
Dim text As String = "test"
FileOpen(1, "test.bin", OpenMode.Binary)
FilePutObject(1, text)
FileClose(1)
End Sub
Opmerkingen
De FilePutObject functie wordt gebruikt in plaats van FilePut om dubbelzinnigheden tijdens het compileren te voorkomen als het type Object wordt doorgegeven in plaats van een ander type, zoals IntegerLong, , Shortenzovoort.
FilePutObject schrijft en leest descriptors die het object beschrijven. Als u van plan bent om het Variant type uit te schrijven, FilePutObject is dit vereist. Als u twijfelt, als u een object gebruikt voor de tweede parameter, raden we u aan altijd te gebruiken FilePutObject en FileGetObject.
FilePutObject is alleen geldig in Random en in de Binary modus.
Gegevens die zijn geschreven met FilePutObject , worden meestal gelezen uit een bestand met behulp van FileGetObject.
De eerste record of byte in een bestand bevindt zich op positie 1, de tweede record of byte bevindt zich op positie 2, enzovoort. Als u weglaat RecordNumber, FilePutObject schrijft u de volgende record of byte na de laatste FileGetObject of FilePutObject functie (of de record of byte waarnaar de laatste Seek functie wijst).
Het StringIsFixedLength argument bepaalt of de functie tekenreeksen interpreteert als variabele of vaste lengte.
FilePutObject schrijft de lengtedescriptor niet wanneer het argument is True. Als u StringIsFixedLength = True met FilePutObject, moet u hetzelfde doen met FileGetObject, en u moet er ook voor zorgen dat de tekenreeks wordt geïnitialiseerd tot de verwachte lengte.
Willekeurige modus
Voor bestanden die in Random de modus worden geopend, zijn de volgende regels van toepassing:
Als de lengte van de gegevens die worden geschreven kleiner is dan de lengte die is opgegeven in de
RecordLengthcomponent van deFileOpenfunctie,FilePutObjectschrijft u volgende records op recordlengtegrenzen. De ruimte tussen het einde van de ene record en het begin van de volgende record wordt opgevuld met de bestaande inhoud van de bestandsbuffer. Omdat de hoeveelheid opvullingsgegevens niet nauwkeurig kan worden bepaald, is het over het algemeen een goed idee om de recordlengte overeen te laten komen met de lengte van de gegevens die worden geschreven. Als de lengte van de gegevens die worden geschreven groter is dan de lengte die is opgegeven in deRecordLengthcomponent van deFileOpenfunctie, wordt er een uitzondering gegenereerd.Als de variabele die wordt geschreven een object is dat een numeriek type bevat,
FilePutObjectschrijft u twee bytes die hetVarTypeobject identificeren en schrijft u vervolgens de variabele. Als u bijvoorbeeld een object schrijft dat een geheel getal bevat,FilePutObjectschrijft u zes bytes: twee bytes waarmee het object wordt geïdentificeerd alsVarType(3)(Integer) en vier bytes die de gegevens bevatten. De recordlengte die is opgegeven door deRecordLengthparameter in deFileOpenfunctie, moet ten minste twee bytes groter zijn dan het werkelijke aantal bytes dat is vereist om de variabele op te slaan.Als de variabele die wordt geschreven een object is dat een tekenreeks bevat,
FilePutObjectschrijft u een twee-bytedescriptor die hetVarType(8)object identificeert, een twee-bytedescriptor die de lengte van de tekenreeks aangeeft en schrijft vervolgens de tekenreeksgegevens. De recordlengte die is opgegeven door deRecordLengthparameter in deFileOpenfunctie, moet ten minste vier bytes groter zijn dan de werkelijke lengte van de tekenreeks. Als u een tekenreeks zonder descriptor wilt plaatsen, moet u deStringIsFixedLengthparameter doorgevenTrueen moet de tekenreeks die u hebt gelezen, de juiste lengte hebben.Als de variabele die wordt geschreven een matrix is, moet de recordlengte die is opgegeven door de
RecordLengthcomponent in deFileOpenfunctie groter dan of gelijk zijn aan de som van alle bytes die nodig zijn om de matrixgegevens en de matrixdescriptor te schrijven. De descriptor geeft de rang van de matrix, de grootte en de ondergrenzen voor elke rang aan. De lengte is gelijk aan 2 plus 8 keer het aantal dimensies: (2 + 8 * NumberOfDimensions).
Binaire modus
Voor bestanden die in Binary de modus worden geopend, zijn alle regels voor de Random modus van toepassing, met uitzondering van:
- De
RecordLengthcomponent in deFileOpenfunctie heeft geen effect.FilePutObjectschrijft alle variabelen naar de schijf aaneengesloten, dat wil gezegd, zonder opvulling tussen records.