FileSystem.FileGetObject(Int32, Object, Int64) Metódus
Definíció
Fontos
Egyes információk olyan, kiadás előtti termékekre vonatkoznak, amelyek a kiadásig még jelentősen módosulhatnak. A Microsoft nem vállal kifejezett vagy törvényi garanciát az itt megjelenő információért.
Adatokat olvas be egy megnyitott lemezfájlból egy változóba. A My funkció jobb hatékonyságot és teljesítményt biztosít a fájl I/O-műveletekben, mint FileGetObjecta . További információért lásd FileSystem.
public static void FileGetObject(int FileNumber, ref object Value, long RecordNumber = -1);
static member FileGetObject : int * obj * int64 -> unit
Public Sub FileGetObject (FileNumber As Integer, ByRef Value As Object, Optional RecordNumber As Long = -1)
Paraméterek
- FileNumber
- Int32
Kötelező. Bármely érvényes fájlszám.
- Value
- Object
Kötelező. Érvényes változónév, amelybe az adatok beolvasva lesznek.
- RecordNumber
- Int64
Opcionális. Rekordszám (Random módfájlok) vagy bájtszám (Binary módfájlok), amelyeknél az olvasás elindul.
Példák
Az alábbi példa beolvassa egy rekordot egy tesztfájlba, majd lekéri azt.
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)
Megjegyzések
A FileGetObject függvény ahelyett, FileGet hogy a fordítási időpontban kétértelműségeket használ, ha egy másik típus helyett ad vissza típustObject, például Integer: , LongShortés így tovább.
Ha ki szeretné írni a típust Variant , FileGetObject szükség van rá. Ha kétségei vannak, ha a második paraméterhez objektumot használ, mindig azt javasoljuk, hogy használja FilePutObject és FileGetObject.
FileGetObject csak és RandomBinary módban érvényes.
Az adatok olvasása általában a következővel FileGetObjectFilePutObjecttörténik: .
A fájl első rekordja vagy bájtja az 1. pozícióban van, a második rekord vagy bájt a 2. pozícióban van stb. Ha kihagyja RecordNumber, FileGetObject beolvassa a rekordot vagy bájtot az utolsó FileGetObject vagy FilePutObject a függvény után (vagy az utolsó Seek függvény mutat rá).
Véletlenszerű mód
A módban megnyitott Random fájlokra a következő szabályok vonatkoznak:
Ha az olvasott adatok hossza kisebb, mint a függvény záradékában
RecordLengthFileOpenmegadott hossz,FileGetObjectakkor a rekordhossz-határokat követő rekordokat olvassa be. Az egyik rekord vége és a következő rekord eleje közötti térköz a fájlpuffer meglévő tartalmával van elválasztva. Mivel a kitöltési adatok mennyisége nem határozható meg pontosan, célszerű, ha a rekord hossza megegyezik az éppen beolvasott adatok hosszával.Ha a beolvasott változó egy sztring, alapértelmezés szerint
FileGetObjectbeolvassa a karakterlánc hosszát tartalmazó két bájtos leírót, majd beolvassa a változóba kerülő adatokat. Ezért a függvény záradékaFileOpenáltalRecordLengthmegadott rekordhossznak legalább két bájttal nagyobbnak kell lennie, mint a sztring tényleges hossza. Visual Basic 6.0-s és korábbi verziók támogatják a rögzített hosszúságú sztringeket, és ha fájlba olvasnak, a hosszleíró nem lesz megírva. Ha leíró nélkül szeretne sztringet olvasni, akkor a paraméternekStringIsFixedLengthkell átadniaTrue, és a beolvasott sztringnek a megfelelő hosszúságúnak kell lennie.Ha a beolvasandó változó tömb, akkor a függvény paramétere
FileOpenáltalRecordLengthmegadott rekordhossznak nagyobbnak vagy egyenlőnek kell lennie a tömbadatok és a tömbleíró írásához szükséges bájtok összegével. A leíró megadja a tömb rangját, méretét és alsó határát az egyes rangokhoz. Hosszúsága 2 és 8-szorosa a méretek számának: 2 + 8 * NumberOfDimensions.A következő tömbdeklarációhoz például 218 bájt szükséges a tömb lemezre írásakor:
Dim MyArray(4, 9) As IntegerA 218 bájt a következőképpen oszlik meg: 18 bájt a leíróhoz (2 + 8 * 2), és 100 bájt az adatokhoz (5 * 10 * 4).
FileGetObjectúgy olvassa be a struktúrák elemeit, mintha egyenként olvasnák őket, azzal a különbségekkel, hogy nincs párnázás az elemek között. A lemezen a felhasználó által definiált típusú dinamikus tömbök (a következővel írva) előtagot alkotnak egy leíróvalFilePutObject, amelynek hossza 2 és a dimenziók számának 8-szorosa: 2 + 8 * NumberOfDimensions. A függvény záradékaFileOpenáltalRecordLengthmegadott rekordhossznak nagyobbnak vagy egyenlőnek kell lennie az egyes elemek olvasásához szükséges bájtok összegével, beleértve a tömböket és a leíróikat is. Az VBFixedStringAttribute osztály a struktúrák sztringmezőire alkalmazható, hogy a lemezre írott sztring méretét jelezze.
Bináris mód
A módban megnyitott Binary fájlokra az Random összes szabály érvényes az alábbi kivételekkel:
A
RecordLengthfüggvény záradékánakFileOpennincs hatása.FileGetObjectAz összes változót egybefüggően olvassa be a lemezről, azaz nincs párnázás a rekordok között.A struktúrában
FileGetObjectlévő tömbön kívüli tömbök esetében csak az adatokat olvassa be. A leíró nem olvasható.
FileGetObject Olyan változó hosszúságú sztringeket olvas be, amelyek nem a struktúrák elemei, anélkül, hogy a két bájt hosszúságú leírót várják. Az olvasási bájtok száma megegyezik a sztringben már szereplő karakterek számával.
Important
Fájlokból való olvasáskor ne hozzon döntéseket a fájl tartalmának tartalmáról a fájlnévkiterjesztés alapján. Előfordulhat például, hogy egy Form1.vb nevű fájl nem Visual Basic forrásfájl.