FileSystem.FilePutObject(Int32, Object, Int64) Metoda
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Zapíše data z proměnné do souboru disku. Tato My funkce poskytuje lepší produktivitu a výkon při vstupně-výstupních operacích souborů než FilePutObject. Další informace najdete na webu FileSystem.
[System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("The origin object type could not be statically analyzed and may be trimmed")]
public static void FilePutObject(int FileNumber, object Value, long RecordNumber = -1);
public static void FilePutObject(int FileNumber, object Value, long RecordNumber = -1);
[<System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("The origin object type could not be statically analyzed and may be trimmed")>]
static member FilePutObject : int * obj * int64 -> unit
static member FilePutObject : int * obj * int64 -> unit
Public Sub FilePutObject (FileNumber As Integer, Value As Object, Optional RecordNumber As Long = -1)
Parametry
- FileNumber
- Int32
Required. Libovolné platné číslo souboru.
- Value
- Object
Required. Platný název proměnné, který obsahuje data zapsaná na disk.
- RecordNumber
- Int64
Optional. Číslo záznamu (Random soubory v režimu) nebo bajtové číslo (Binary soubory režimu), na kterých začíná zápis.
- Atributy
Příklady
Tento příklad používá FilePutObject funkci k zápisu řetězce do souboru.
Sub WriteData()
Dim text As String = "test"
FileOpen(1, "test.bin", OpenMode.Binary)
FilePutObject(1, text)
FileClose(1)
End Sub
Poznámky
Funkce FilePutObject se používá místo FilePut toho, aby se zabránilo nejednoznačnosti v době kompilace, pokud je typ Object předán místo jiného typu, například Integer, Long, Shorta tak dále.
FilePutObject zapisuje a čte popisovače, které popisují objekt. Pokud chcete typ Variant napsat, FilePutObject je nutné. Pokud máte pochybnosti, pokud používáte objekt pro druhý parametr, doporučujeme, abyste vždy používali FilePutObject a FileGetObject.
FilePutObject je platný pouze v Random režimu a Binary v režimu.
Data zapsaná FilePutObject pomocí souboru se obvykle čtou ze souboru pomocí FileGetObject.
První záznam nebo bajt v souboru je na pozici 1, druhý záznam nebo bajt je na pozici 2 atd. Pokud vynecháte RecordNumber, FilePutObject zapíše další záznam nebo bajt za poslední FileGetObjectFilePutObject nebo funkci (nebo záznam nebo bajt odkazovaný na poslední Seek funkci).
Argument StringIsFixedLength určuje, zda funkce interpretuje řetězce jako proměnnou nebo pevnou délku.
FilePutObject nezapisuje popisovač délky, pokud je Trueargument . Pokud používáte s StringIsFixedLength = TrueFilePutObject , musíte provést totéž s FileGetObjecta musíte také zajistit, aby byl řetězec inicializován na očekávanou délku.
Náhodný režim
Pro soubory otevřené v Random režimu platí následující pravidla:
Pokud je délka zapisovaných dat menší než délka zadaná v
RecordLengthklauzuliFileOpenfunkce,FilePutObjectzapíše následné záznamy o hranicích délky záznamů. Mezera mezi koncem jednoho záznamu a začátkem dalšího záznamu je vyplněna existujícím obsahem vyrovnávací paměti souboru. Vzhledem k tomu, že množství odsazení dat nelze přesně určit, je obecně vhodné, aby délka záznamu odpovídala délce zapisovaných dat. Pokud je délka zapisovaných dat větší než délka zadaná vRecordLengthklauzuliFileOpenfunkce, vyvolá se výjimka.Pokud je zapisovaná proměnná objekt obsahující číselný typ,
FilePutObjectzapíše dva bajty identifikujícíVarTypeobjekt a pak zapíše proměnnou. Například při zápisu objektu, který obsahuje celé číslo,FilePutObjectzapíše šest bajtů: dva bajty, které identifikují objekt jakoVarType(3)(Integer) a čtyři bajty obsahující data. Délka záznamuRecordLengthzadaná parametrem veFileOpenfunkci musí být alespoň dva bajty větší než skutečný počet bajtů potřebných k uložení proměnné.Pokud je zapisovaná proměnná objekt, který obsahuje řetězec,
FilePutObjectzapíše dvoubajtů popisovač identifikujícíVarType(8)objekt, dvoubajtů popisovač označující délku řetězce a zapíše řetězcová data. Délka záznamuRecordLengthzadaná parametrem veFileOpenfunkci musí být alespoň čtyři bajty větší než skutečná délka řetězce. Pokud chcete vložit řetězec bez popisovače, měliTrueStringIsFixedLengthbyste předat parametru a řetězec, do kterého jste načetli, by měl mít správnou délku.Pokud je zapisovaná proměnná matice, musí být délka záznamu zadaná
RecordLengthklauzulí veFileOpenfunkci 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í mez pro každé pořadí. Jeho délka se rovná 2 plus 8násobek počtu dimenzí: (2 + 8 * NumberOfDimensions).
Binární režim
U souborů otevřených v Binary režimu platí všechna Random pravidla režimu s výjimkou:
- Klauzule
RecordLengthveFileOpenfunkci nemá žádný vliv.FilePutObjectzapíše všechny proměnné na disk souvisle, tj. bez odsazení mezi záznamy.