FileSystem.FilePutObject(Int32, Object, Int64) Metoda
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
Zapisuje dane ze zmiennej do pliku na dysku. Ta My
funkcja zapewnia lepszą produktywność i wydajność operacji we/wy plików niż FilePutObject
. Aby uzyskać więcej informacji, zobacz FileSystem.
public static void FilePutObject (int FileNumber, object Value, long RecordNumber = -1);
static member FilePutObject : int * obj * int64 -> unit
Public Sub FilePutObject (FileNumber As Integer, Value As Object, Optional RecordNumber As Long = -1)
Parametry
- FileNumber
- Int32
Wymagane. Dowolna prawidłowa liczba plików.
- Value
- Object
Wymagane. Prawidłowa nazwa zmiennej, która zawiera dane zapisane na dysku.
- RecordNumber
- Int64
Opcjonalny. Liczba rekordów (Random
pliki trybu) lub liczba bajtów (Binary
pliki trybu), w których rozpoczyna się zapisywanie.
Przykłady
W tym przykładzie użyto FilePutObject
funkcji do zapisania ciągu do pliku.
Sub WriteData()
Dim text As String = "test"
FileOpen(1, "test.bin", OpenMode.Binary)
FilePutObject(1, text)
FileClose(1)
End Sub
Uwagi
Funkcja FilePutObject
jest używana zamiast FilePut
unikać niejednoznaczności w czasie kompilacji, jeśli typ Object
jest przekazywany zamiast innego typu, takiego jak Integer
, Long
, Short
i tak dalej.
FilePutObject
zapisuje i odczytuje deskryptory opisujące obiekt. Jeśli zamierzasz napisać Variant
typ, FilePutObject
jest wymagany. W razie wątpliwości, jeśli używasz obiektu dla drugiego parametru, zalecamy, aby zawsze używać FilePutObject
parametru i FileGetObject
.
FilePutObject
jest prawidłowy tylko w Random
trybie i Binary
.
Dane zapisywane FilePutObject
za pomocą polecenia są zwykle odczytywane z pliku przy użyciu polecenia FileGetObject
.
Pierwszy rekord lub bajt w pliku znajduje się na pozycji 1, drugi rekord lub bajt na pozycji 2 i tak dalej. Jeśli pominięto RecordNumber
, FilePutObject
zapisuje następny rekord lub bajt po ostatnim FileGetObject
lub FilePutObject
funkcji (albo rekord lub bajt wskazywany przez ostatnią Seek
funkcję).
Argument StringIsFixedLength
określa, czy funkcja interpretuje ciągi jako zmienną, czy stałą długość. FilePutObject
nie zapisuje deskryptora długości, gdy argument ma wartość True
. Jeśli używasz polecenia StringIsFixedLength
= True
z FilePutObject
programem , musisz wykonać to samo z elementem FileGetObject
, a także upewnić się, że ciąg jest inicjowany do oczekiwanej długości.
Tryb losowy
W przypadku plików otwartych w Random
trybie obowiązują następujące reguły:
Jeśli długość zapisywanych danych jest mniejsza niż długość określona w
RecordLength
klauzuliFileOpen
funkcji,FilePutObject
zapisuje kolejne rekordy na granicach długości rekordu. Odstęp między końcem jednego rekordu a początkiem następnego rekordu jest wypełniany istniejącą zawartością buforu plików. Ponieważ ilość danych dopełniania nie może być dokładnie określona, zazwyczaj dobrym pomysłem jest, aby długość rekordu była zgodna z długością zapisywanych danych. Jeśli długość zapisywanych danych jest większa niż długość określona wRecordLength
klauzuliFileOpen
funkcji, zgłaszany jest wyjątek.Jeśli zapisywana zmienna jest obiektem zawierającym typ liczbowy,
FilePutObject
zapisuje dwie bajty identyfikująceVarType
obiekt, a następnie zapisuje zmienną. Na przykład podczas pisania obiektu zawierającego liczbę całkowitąFilePutObject
zapisuje sześć bajtów: dwa bajty identyfikujące obiekt jakoVarType(3)
(Integer
) i cztery bajty zawierające dane. Długość rekordu określonaRecordLength
przez parametr wFileOpen
funkcji musi być co najmniej dwie bajty większe niż rzeczywista liczba bajtów wymaganych do przechowywania zmiennej.Jeśli zapisywana zmienna jest obiektem zawierającym ciąg,
FilePutObject
zapisuje deskryptor dwu bajtowy identyfikującyVarType(8)
obiekt, deskryptor dwu bajtowy wskazujący długość ciągu, a następnie zapisuje dane ciągu. Długość rekorduRecordLength
określona przez parametr wFileOpen
funkcji musi wynosić co najmniej cztery bajty większe niż rzeczywista długość ciągu. Jeśli chcesz umieścić ciąg bez deskryptora, należy przekazaćTrue
go do parametruStringIsFixedLength
, a odczytany ciąg powinien mieć prawidłową długość.Jeśli zapisywana zmienna jest tablicą, długość rekordu określona przez
RecordLength
klauzulę wFileOpen
funkcji musi być większa lub równa sumie wszystkich bajtów wymaganych do zapisania danych tablicy i deskryptora tablicy. Deskryptor określa rangę tablicy, rozmiar i dolne granice dla każdej rangi. Jego długość wynosi 2 plus 8 razy więcej wymiarów: (2 + 8 * LiczbaOfDimensions).
Tryb binarny
W przypadku plików otwartych w Binary
trybie obowiązują wszystkie Random
reguły trybu, z wyjątkiem:
- Klauzula
RecordLength
FileOpen
w funkcji nie ma wpływu.FilePutObject
zapisuje wszystkie zmienne na dysku stale, czyli bez dopełniania między rekordami.