FileSystem.FileGetObject(Int32, Object, Int64) Metoda

Definice

Čte data z otevřeného souboru na disku do proměnné. Tato My funkce poskytuje vyšší produktivitu a výkon při vstupně-výstupních operacích souborů než FileGetObject. Další informace naleznete v tématu 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)

Parametry

FileNumber
Int32

Povinná hodnota. Libovolné platné číslo souboru

Value
Object

Povinná hodnota. Platný název proměnné, do které jsou načtena data.

RecordNumber
Int64

Nepovinný parametr. Číslo záznamu (Random soubory režimu) nebo číslo bajtu (Binary soubory režimu), od kterého začíná čtení.

Příklady

Následující příklad načte záznam do testovacího souboru a pak ho načte.

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)

Poznámky

Funkce FileGetObject se používá místo FileGet , aby se zabránilo nejednoznačnostem v době kompilace, pokud je vrácen typ Object místo jiného typu, například Integer, Long, Shorta tak dále.

Pokud chcete typ zapsat Variant , FileGetObject je povinný. V případě pochybností, pokud používáte objekt pro druhý parametr, je vždy doporučeno použít FilePutObject a FileGetObject.

FileGetObject je platný pouze v Random režimu a Binary .

Data přečtená pomocí FileGetObject se obvykle zapisuje pomocí FilePutObject.

První záznam nebo bajt v souboru se nachází na pozici 1, druhý záznam nebo bajt na pozici 2 atd. Pokud vynecháte RecordNumber, FileGetObject přečte záznam nebo bajt za poslední FileGetObject nebo FilePutObject funkcí (nebo odkazuje na poslední Seek funkci).

Náhodný režim

Pro soubory otevřené v Random režimu platí následující pravidla:

  • Pokud je délka čtených dat menší než délka zadaná v RecordLength klauzuli FileOpen funkce, FileGetObject přečte následující záznamy o hranicích záznamů. Mezera mezi koncem jednoho záznamu a začátkem dalšího záznamu je vyplněna stávajícím obsahem vyrovnávací paměti souboru. Vzhledem k tomu, že množství dat odsazení nelze přesně určit, je vhodné, aby délka záznamu odpovídala délce přečtených dat.

  • Pokud je proměnnou, do které se čte, řetězec, načte ve výchozím nastavení FileGetObject dvoubajtů popisovač obsahující délku řetězce a pak přečte data, která jde do proměnné. Proto délka záznamu určená klauzulí RecordLengthFileOpen funkce musí být alespoň o dva bajty větší než skutečná délka řetězce. Visual Basic 6.0 a starší verze podporují řetězce s pevnou délkou a při čtení do souboru není popisovač délky zapsán. Pokud chcete číst řetězec bez popisovače, měli byste parametru StringIsFixedLength předat True a řetězec, do kterého jste načetli, by měl mít správnou délku.

  • Pokud je proměnnou, do které se čte, pole, musí být délka záznamu určená parametrem RecordLength ve FileOpen funkci větší nebo rovna součtu všech bajtů potřebných k zápisu dat pole a popisovače pole. Popisovač určuje pořadí pole, velikost a dolní meze každého pořadí. Jeho délka se rovná 2 plus 8násobku počtu dimenzí: 2 + 8 * NumberOfDimensions.

    Například následující deklarace pole vyžaduje při zápisu pole na disk 218 bajtů:

    Dim MyArray(4, 9) As Integer
    

    218 bajtů se distribuuje takto: 18 bajtů pro popisovač (2 + 8 × 2) a 100 bajtů pro data (5 × 10 × 4).

  • FileGetObject čte prvky struktur, jako by byly čteny jednotlivě, s tím rozdílem, že mezi prvky neexistuje žádné odsazení. Na disku má předponu dynamické pole v uživatelem definovaném typu (napsané pomocí FilePutObject) popisovač, jehož délka se rovná 2 plus 8násobek počtu dimenzí: 2 + 8 * NumberOfDimensions. Délka záznamu RecordLength určená klauzulí ve FileOpen funkci musí být větší nebo rovna součtu všech bajtů potřebných ke čtení jednotlivých prvků, včetně polí a jejich popisovačů. Třídu VBFixedStringAttribute lze použít na řetězcová pole ve strukturách, která označují velikost řetězce při zápisu na disk.

Binární režim

Pro soubory otevřené v Binary režimu platí všechna Random pravidla s těmito výjimkami:

  • Klauzule RecordLengthFileOpen ve funkci nemá žádný účinek. FileGetObject čte všechny proměnné z disku souvisle, to znamená bez odsazení mezi záznamy.

  • Pro jakoukoli jinou matici než pole ve struktuře čte FileGetObject pouze data. Není čten žádný popisovač.

FileGetObject čte řetězce s proměnnou délkou, které nejsou prvky struktur, aniž by očekával popisovač délky dvou bajtů. Počet přečtených bajtů se rovná počtu znaků, které se již v řetězci nacházejí.

Důležité

Během čtení ze souborů se při rozhodování o obsahu souboru neřiďte příponou názvu souboru. Například soubor s názvem Form1.vb nemusí být zdrojovým souborem jazyka Visual Basic.

Platí pro

Viz také