FileSystem.FileGetObject(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.
Läser data från en öppen diskfil till en variabel. Funktionen My ger bättre produktivitet och prestanda i fil-I/O-åtgärder än FileGetObject. Mer information finns i FileSystem.
[System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("The target object type could not be statically analyzed and may be trimmed")]
public static void FileGetObject(int FileNumber, ref object Value, long RecordNumber = -1);
public static void FileGetObject(int FileNumber, ref object Value, long RecordNumber = -1);
[<System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("The target object type could not be statically analyzed and may be trimmed")>]
static member FileGetObject : int * obj * int64 -> unit
static member FileGetObject : int * obj * int64 -> unit
Public Sub FileGetObject (FileNumber As Integer, ByRef Value As Object, Optional RecordNumber As Long = -1)
Parametrar
- FileNumber
- Int32
Required. Ett giltigt filnummer.
- Value
- Object
Required. Giltigt variabelnamn som data läse till.
- RecordNumber
- Int64
Optional. Postnummer (Random lägesfiler) eller bytenummer (Binary lägesfiler) där läsningen startar.
- Attribut
Exempel
I följande exempel läss en post in i en testfil och sedan hämtas den.
Dim c As Object = "test"
FileSystem.FileOpen(1, "test.dat", OpenMode.Binary)
FileSystem.FilePutObject(1, "ABCDEF")
FileSystem.Seek(1, 1)
FileSystem.FileGetObject(1, c)
MsgBox(c)
FileSystem.FileClose(1)
Kommentarer
Funktionen FileGetObject används i stället för FileGet för att undvika tvetydigheter vid kompileringstiden om typen Object returneras i stället för en annan typ, till exempel Integer, Long, Shortoch så vidare.
Om du tänker skriva ut Variant typen FileGetObject krävs. Om du är osäker på om du använder ett -objekt för den andra parametern föreslås det alltid att du använder FilePutObject och FileGetObject.
FileGetObject är endast giltigt i Random och Binary läge.
Data som läss med FileGetObject skrivs vanligtvis med FilePutObject.
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 RecordNumberFileGetObject läser du posten eller bytet efter den sista FileGetObject funktionen eller FilePutObject funktionen (eller pekas på av den sista Seek funktionen).
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 läses är mindre än den längd som anges i -satsen
RecordLengthiFileOpenfunktionen läserFileGetObjectefterfö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 en bra idé att postlängden matchar längden på de data som läss.Om variabeln som läse in är en sträng läser som standard
FileGetObjecten tvåbytesbeskrivning som innehåller stränglängden och läser sedan de data som går in i variabeln. Därför måste postlängdenRecordLengthsom anges av -satsen iFileOpenfunktionen vara minst två byte större än strängens faktiska längd. Visual Basic 6.0 och tidigare versioner stöder strängar med fast längd och vid läsning till en fil skrivs inte längdbeskrivningen. Om du vill läsa en sträng utan beskrivningen bör du skickaTruetill parameternStringIsFixedLengthoch strängen som du läser in ska vara rätt längd.Om variabeln som läse in i är en matris måste postlängden som anges av parametern
RecordLengthiFileOpenfunktionen 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.Följande matrisdeklaration kräver till exempel 218 byte när matrisen skrivs till disk:
Dim MyArray(4, 9) As IntegerDe 218 byteen distribueras på följande sätt: 18 byte för beskrivningen (2 + 8 * 2) och 100 byte för data (5 * 10 * 4).
FileGetObjectläser element i strukturer som om var och en lästes individuellt, förutom att det inte finns någon utfyllnad mellan element. På disken prefixeras en dynamisk matris i en användardefinierad typ (skriven med ) av en deskriptor vars längd är lika medFilePutObject2 plus 8 gånger antalet dimensioner: 2 + 8 * NumberOfDimensions. PostlängdenRecordLengthsom anges av -satsen iFileOpenfunktionen måste vara större än eller lika med summan av alla byte som krävs för att läsa de enskilda elementen, inklusive alla matriser och deras beskrivningar. Klassen VBFixedStringAttribute kan tillämpas på strängfält i strukturerna för att ange storleken på strängen när den skrivs till disk.
Binärt läge
För filer som öppnas i Binary läge gäller alla Random regler, med följande undantag:
RecordLengthSatsen iFileOpenfunktionen har ingen effekt.FileGetObjectläser alla variabler från disken sammanhängande, dvs. utan utfyllnad mellan poster.För alla andra matriser än en matris i en struktur läser
FileGetObjectendast data. Ingen deskriptor har lästs.
FileGetObject läser strängar med variabel längd som inte är element i strukturer utan att förvänta sig två bytes längdbeskrivning. Antalet lästa byte är lika med antalet tecken som redan finns i strängen.
Important
När du läser från filer ska du inte fatta beslut om innehållet i en fil baserat på filnamnstillägget. En fil med namnet Form1.vb kanske till exempel inte är en Visual Basic källfil.