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, Shorti 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 FilePutObjectprogramem , 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
RecordLengthklauzuliFileOpenfunkcji,FilePutObjectzapisuje 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 wRecordLengthklauzuliFileOpenfunkcji, zgłaszany jest wyjątek.Jeśli zapisywana zmienna jest obiektem zawierającym typ liczbowy,
FilePutObjectzapisuje dwie bajty identyfikująceVarTypeobiekt, a następnie zapisuje zmienną. Na przykład podczas pisania obiektu zawierającego liczbę całkowitąFilePutObjectzapisuje sześć bajtów: dwa bajty identyfikujące obiekt jakoVarType(3)(Integer) i cztery bajty zawierające dane. Długość rekordu określonaRecordLengthprzez parametr wFileOpenfunkcji 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,
FilePutObjectzapisuje 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ść rekorduRecordLengthokreślona przez parametr wFileOpenfunkcji 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ćTruego do parametruStringIsFixedLength, a odczytany ciąg powinien mieć prawidłową długość.Jeśli zapisywana zmienna jest tablicą, długość rekordu określona przez
RecordLengthklauzulę wFileOpenfunkcji 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
RecordLengthFileOpenw funkcji nie ma wpływu.FilePutObjectzapisuje wszystkie zmienne na dysku stale, czyli bez dopełniania między rekordami.