FileSystem.FileGetObject(Int32, Object, Int64) Metódus

Definíció

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 RecordLengthFileOpen megadott hossz, FileGetObject akkor 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 FileGetObject beolvassa 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éka FileOpen által RecordLength megadott 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éternek StringIsFixedLength kell á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 által RecordLength megadott 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 Integer
    

    A 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óval FilePutObject, amelynek hossza 2 és a dimenziók számának 8-szorosa: 2 + 8 * NumberOfDimensions. A függvény záradéka FileOpen által RecordLength megadott 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 RecordLength függvény záradékának FileOpen nincs hatása. FileGetObject Az ö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 FileGetObject lé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.

A következőre érvényes:

Lásd még