FileSystem.FilePut Metoda

Definicja

Zapisuje dane ze zmiennej do pliku dysku. Ta My funkcja zapewnia lepszą wydajność i wydajność operacji we/wy plików niż FilePut. F Aby uzyskać więcej informacji, zobacz FileSystem.

Przeciążenia

Nazwa Opis
FilePut(Int32, Int64, Int64)

Zapisuje dane ze zmiennej do pliku dysku. Ta My funkcja zapewnia lepszą wydajność i wydajność operacji we/wy plików niż FilePut. Aby uzyskać więcej informacji, zobacz FileSystem.

FilePut(Int32, String, Int64, Boolean)

Zapisuje dane ze zmiennej do pliku dysku. Ta My funkcja zapewnia lepszą wydajność i wydajność operacji we/wy plików niż FilePut. Aby uzyskać więcej informacji, zobacz FileSystem.

FilePut(Object, Object, Object)
Przestarzałe.
Przestarzałe.

Zapisuje dane ze zmiennej do pliku dysku. Ta My funkcja zapewnia lepszą wydajność i wydajność operacji we/wy plików niż FilePut. Aby uzyskać więcej informacji, zobacz FileSystem.

FilePut(Int32, ValueType, Int64)

Zapisuje dane ze zmiennej do pliku dysku. Ta My funkcja zapewnia lepszą wydajność i wydajność operacji we/wy plików niż FilePut. Aby uzyskać więcej informacji, zobacz FileSystem.

FilePut(Int32, Single, Int64)

Zapisuje dane ze zmiennej do pliku dysku. Ta My funkcja zapewnia lepszą wydajność i wydajność operacji we/wy plików niż FilePut. Aby uzyskać więcej informacji, zobacz FileSystem.

FilePut(Int32, Int32, Int64)

Zapisuje dane ze zmiennej do pliku dysku. Ta My funkcja zapewnia lepszą wydajność i wydajność operacji we/wy plików niż FilePut. Aby uzyskać więcej informacji, zobacz FileSystem.

FilePut(Int32, Array, Int64, Boolean, Boolean)

Zapisuje dane ze zmiennej do pliku dysku. Ta My funkcja zapewnia lepszą wydajność i wydajność operacji we/wy plików niż FilePut. Aby uzyskać więcej informacji, zobacz FileSystem.

FilePut(Int32, Double, Int64)

Zapisuje dane ze zmiennej do pliku dysku. Ta My funkcja zapewnia lepszą wydajność i wydajność operacji we/wy plików niż FilePut. Aby uzyskać więcej informacji, zobacz FileSystem.

FilePut(Int32, Decimal, Int64)

Zapisuje dane ze zmiennej do pliku dysku. Ta My funkcja zapewnia lepszą wydajność i wydajność operacji we/wy plików niż FilePut. Aby uzyskać więcej informacji, zobacz FileSystem.

FilePut(Int32, DateTime, Int64)

Zapisuje dane ze zmiennej do pliku dysku. Ta My funkcja zapewnia lepszą wydajność i wydajność operacji we/wy plików niż FilePut. Aby uzyskać więcej informacji, zobacz FileSystem.

FilePut(Int32, Char, Int64)

Zapisuje dane ze zmiennej do pliku dysku. Ta My funkcja zapewnia lepszą wydajność i wydajność operacji we/wy plików niż FilePut. Aby uzyskać więcej informacji, zobacz FileSystem.

FilePut(Int32, Byte, Int64)

Zapisuje dane ze zmiennej do pliku dysku. Ta My funkcja zapewnia lepszą wydajność i wydajność operacji we/wy plików niż FilePut. Aby uzyskać więcej informacji, zobacz FileSystem.

FilePut(Int32, Boolean, Int64)

Zapisuje dane ze zmiennej do pliku dysku. Ta My funkcja zapewnia lepszą wydajność i wydajność operacji we/wy plików niż FilePut. Aby uzyskać więcej informacji, zobacz FileSystem.

FilePut(Int32, Int16, Int64)

Zapisuje dane ze zmiennej do pliku dysku. Ta My funkcja zapewnia lepszą wydajność i wydajność operacji we/wy plików niż FilePut. Aby uzyskać więcej informacji, zobacz FileSystem.

FilePut(Int32, Int64, Int64)

Zapisuje dane ze zmiennej do pliku dysku. Ta My funkcja zapewnia lepszą wydajność i wydajność operacji we/wy plików niż FilePut. Aby uzyskać więcej informacji, zobacz FileSystem.

public static void FilePut(int FileNumber, long Value, long RecordNumber = -1);
static member FilePut : int * int64 * int64 -> unit
Public Sub FilePut (FileNumber As Integer, Value As Long, Optional RecordNumber As Long = -1)

Parametry

FileNumber
Int32

To jest wymagane. Dowolny prawidłowy numer pliku.

Value
Int64

To jest wymagane. Prawidłowa nazwa zmiennej, która zawiera dane zapisane na dysku.

RecordNumber
Int64

Optional. Liczba rekordów (Random pliki trybu) lub liczba bajtów (Binary pliki trybu), w których rozpoczyna się zapisywanie.

Wyjątki

RecordNumber < 1 i nie równe -1.

Tryb pliku jest nieprawidłowy.

Przykłady

W tym przykładzie użyto funkcji do zapisywania FilePut danych w pliku. Pięć rekordów struktury Person jest zapisywanych w pliku.

Structure Person
    Public ID As Integer
    Public Name As String
End Structure

Sub WriteData()
    Dim PatientRecord As Person
    Dim recordNumber As Integer
    '    Open file for random access.
    FileOpen(1, "C:\TESTFILE.txt", OpenMode.Binary)
    ' Loop 5 times.
    For recordNumber = 1 To 5
        ' Define ID.
        PatientRecord.ID = recordNumber
        ' Create a string.
        PatientRecord.Name = "Name " & recordNumber
        ' Write record to file.
        FilePut(1, PatientRecord)
    Next recordNumber
    FileClose(1)
End Sub

Uwagi

FilePutjest prawidłowy tylko w Random trybie i .Binary

Dane zapisywane FilePut za pomocą polecenia są zwykle odczytywane z pliku przy użyciu polecenia FileGet.

Pierwszy rekord lub bajt w pliku znajduje się na pozycji 1, drugi rekord lub bajt znajduje się na pozycji 2 itd. Jeśli pominięto RecordNumber, zostanie zapisany następny rekord lub bajt po ostatniej FileGet funkcji lub FilePut wskazywany przez ostatnią Seek funkcję.

StringIsFixedLength Argument określa, czy funkcja interpretuje ciągi jako zmienne, czy stałą długość. FilePut nie zapisuje deskryptora długości, gdy argument ma wartość True. Jeśli używasz polecenia StringIsFixedLength = True z elementem FilePut, musisz wykonać to samo z elementem FileGeti musisz 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 klauzuli FileOpen funkcji, FilePut zapisuje kolejne rekordy w granicach długości rekordu. Odstęp między końcem jednego rekordu a rozpoczęciem następnego rekordu jest dopełniany istniejącą zawartością buforu pliku. Ponieważ nie można określić ilości danych uzupełniania z pewnością, 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 w RecordLength klauzuli FileOpen funkcji, zostanie zgłoszony wyjątek.

  • Jeśli zapisywana zmienna jest ciągiem, FilePut zapisuje deskryptor dwu bajtowy zawierający długość ciągu, a następnie zapisuje dane, które przechodzą do zmiennej. W związku z tym długość rekordu określona przez klauzulę RecordLength w FileOpen funkcji musi wynosić co najmniej dwa bajty większe niż rzeczywista długość ciągu.

  • Jeśli zapisywana zmienna jest obiektem zawierającym typ liczbowy, FilePut zapisuje dwa bajty identyfikujące VarType obiekt, a następnie zapisuje zmienną. Na przykład podczas pisania obiektu zawierającego liczbę całkowitą FilePut zapisuje sześć bajtów: dwa bajty identyfikujące obiekt jako VarType(3) (Integer) i cztery bajty zawierające dane. Długość rekordu RecordLength określona przez parametr w FileOpen funkcji musi wynosić co najmniej dwa bajty większe niż rzeczywista liczba bajtów wymaganych do przechowywania zmiennej.

  • Jeśli zapisywana zmienna jest obiektem zawierającym ciąg, FilePut zapisuje deskryptor dwu bajtowy identyfikujący VarType(8) obiekt, deskryptor dwu bajtowy wskazujący długość ciągu, a następnie zapisuje dane ciągu. Długość rekordu RecordLength określona przez parametr w FileOpen 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 parametru StringIsFixedLength , a odczytany ciąg powinien być prawidłową długością.

  • Jeśli zapisywana zmienna jest tablicą, możesz wybrać, czy napisać deskryptor dla rozmiaru i wymiarów tablicy. Visual Basic 6.0 i starszych wersjach zapisują deskryptor plików dla tablicy dynamicznej, ale nie dla tablicy o stałym rozmiarze. Visual Basic 2005 domyślnie nie zapisuje deskryptora. Aby napisać deskryptor, ustaw ArrayIsDynamic parametr na Truewartość . Podczas zapisywania tablicy należy dopasować sposób odczytywania tablicy; jeśli zostanie odczytany za pomocą deskryptora, musisz napisać deskryptor. 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 * NumberOfDimensions). Długość rekordu RecordLength określona przez klauzulę w FileOpen funkcji musi być większa lub równa sumie wszystkich bajtów wymaganych do zapisania danych tablicy i deskryptora tablicy. Na przykład następująca deklaracja tablicy wymaga 218 bajtów, gdy tablica jest zapisywana na dysku.

    Dim MyArray(4, 9) As Integer
    
  • Jeśli zapisywana zmienna jest dowolnym innym typem zmiennej (a nie ciągiem o zmiennej długości lub obiektem), FilePut zapisuje tylko dane zmiennych. Długość rekordu określona przez klauzulę RecordLengthFileOpen w funkcji musi być większa lub równa długości zapisywanych danych.

  • FilePut zapisuje elementy struktur tak, jakby zostały napisane indywidualnie, z wyjątkiem braku wypełnienia między elementami. Atrybut VBFixedString można zastosować do pól ciągów w strukturach, aby wskazać rozmiar ciągu podczas zapisywania na dysku.

    Note

    Pola ciągów, które mają więcej bajtów niż określony przez VBFixedString atrybut, są obcinane podczas zapisywania na dysku,

Tryb binarny

W przypadku plików otwartych w Binary trybie większość Random reguł trybu ma zastosowanie z pewnymi wyjątkami. Następujące reguły dotyczące plików otwartych w Binary trybie różnią się od reguł trybu Random :

  • Klauzula RecordLengthFileOpen w funkcji nie ma wpływu. FilePut zapisuje wszystkie zmienne na dysku stale, czyli bez uzupełniania między rekordami.

  • W przypadku dowolnej tablicy innej niż tablica w strukturze FilePut zapisuje tylko dane. Deskryptor nie jest zapisywany.

  • FilePut zapisuje ciągi o zmiennej długości, które nie są elementami struktur bez deskryptora długości dwu bajtów. Liczba zapisanych bajtów jest równa liczbie znaków w ciągu. Na przykład następujące instrukcje zapisują 11 bajtów do pliku o numerze 1:

    Dim hellow As String = "Hello World"
    FilePut(1, hellow)
    
  • Zapisywanie w pliku przy użyciu FilePut funkcji wymaga Write dostępu z wyliczenia FileIOPermissionAccess .

Zobacz też

Dotyczy

FilePut(Int32, String, Int64, Boolean)

Zapisuje dane ze zmiennej do pliku dysku. Ta My funkcja zapewnia lepszą wydajność i wydajność operacji we/wy plików niż FilePut. Aby uzyskać więcej informacji, zobacz FileSystem.

public static void FilePut(int FileNumber, string Value, long RecordNumber = -1, bool StringIsFixedLength = false);
static member FilePut : int * string * int64 * bool -> unit
Public Sub FilePut (FileNumber As Integer, Value As String, Optional RecordNumber As Long = -1, Optional StringIsFixedLength As Boolean = false)

Parametry

FileNumber
Int32

To jest wymagane. Dowolny prawidłowy numer pliku.

Value
String

To jest wymagane. Prawidłowa nazwa zmiennej, która zawiera dane zapisane na dysku.

RecordNumber
Int64

Optional. Liczba rekordów (Random pliki trybu) lub liczba bajtów (Binary pliki trybu), w których rozpoczyna się zapisywanie.

StringIsFixedLength
Boolean

Optional. Dotyczy tylko podczas pisania ciągu. Określa, czy do pliku ma być zapisywany deskryptor długości ciągu dwu bajtowego. Wartość domyślna to False.

Wyjątki

RecordNumber < 1 i nie równe -1.

Tryb pliku jest nieprawidłowy.

Przykłady

W tym przykładzie użyto funkcji do zapisywania FilePut danych w pliku. Pięć rekordów struktury Person jest zapisywanych w pliku.

Structure Person
    Public ID As Integer
    Public Name As String
End Structure

Sub WriteData()
    Dim PatientRecord As Person
    Dim recordNumber As Integer
    '    Open file for random access.
    FileOpen(1, "C:\TESTFILE.txt", OpenMode.Binary)
    ' Loop 5 times.
    For recordNumber = 1 To 5
        ' Define ID.
        PatientRecord.ID = recordNumber
        ' Create a string.
        PatientRecord.Name = "Name " & recordNumber
        ' Write record to file.
        FilePut(1, PatientRecord)
    Next recordNumber
    FileClose(1)
End Sub

Uwagi

FilePutjest prawidłowy tylko w Random trybie i .Binary

Dane zapisywane FilePut za pomocą polecenia są zwykle odczytywane z pliku przy użyciu polecenia FileGet.

Pierwszy rekord lub bajt w pliku znajduje się na pozycji 1, drugi rekord lub bajt znajduje się na pozycji 2 itd. Jeśli pominięto RecordNumber, zostanie zapisany następny rekord lub bajt po ostatniej FileGet funkcji lub FilePut wskazywany przez ostatnią Seek funkcję.

StringIsFixedLength Argument określa, czy funkcja interpretuje ciągi jako zmienne, czy stałą długość. FilePut nie zapisuje deskryptora długości, gdy argument ma wartość True. Jeśli używasz polecenia StringIsFixedLength = True z elementem FilePut, musisz wykonać to samo z elementem FileGeti musisz 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 klauzuli FileOpen funkcji, FilePut zapisuje kolejne rekordy w granicach długości rekordu. Odstęp między końcem jednego rekordu a rozpoczęciem następnego rekordu jest dopełniany istniejącą zawartością buforu pliku. Ponieważ nie można określić ilości danych uzupełniania z pewnością, 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 w RecordLength klauzuli FileOpen funkcji, zostanie zgłoszony wyjątek.

  • Jeśli zapisywana zmienna jest ciągiem, FilePut zapisuje deskryptor dwu bajtowy zawierający długość ciągu, a następnie zapisuje dane, które przechodzą do zmiennej. W związku z tym długość rekordu określona przez klauzulę RecordLength w FileOpen funkcji musi wynosić co najmniej dwa bajty większe niż rzeczywista długość ciągu.

  • Jeśli zapisywana zmienna jest obiektem zawierającym typ liczbowy, FilePut zapisuje dwa bajty identyfikujące VarType obiekt, a następnie zapisuje zmienną. Na przykład podczas pisania obiektu zawierającego liczbę całkowitą FilePut zapisuje sześć bajtów: dwa bajty identyfikujące obiekt jako VarType(3) (Integer) i cztery bajty zawierające dane. Długość rekordu RecordLength określona przez parametr w FileOpen funkcji musi wynosić co najmniej dwa bajty większe niż rzeczywista liczba bajtów wymaganych do przechowywania zmiennej.

  • Jeśli zapisywana zmienna jest obiektem zawierającym ciąg, FilePut zapisuje deskryptor dwu bajtowy identyfikujący VarType(8) obiekt, deskryptor dwu bajtowy wskazujący długość ciągu, a następnie zapisuje dane ciągu. Długość rekordu RecordLength określona przez parametr w FileOpen 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 parametru StringIsFixedLength , a odczytany ciąg powinien być prawidłową długością.

  • Jeśli zapisywana zmienna jest tablicą, możesz wybrać, czy napisać deskryptor dla rozmiaru i wymiarów tablicy. Visual Basic 6.0 i starszych wersjach zapisują deskryptor plików dla tablicy dynamicznej, ale nie dla tablicy o stałym rozmiarze. Visual Basic 2005 domyślnie nie zapisuje deskryptora. Aby napisać deskryptor, ustaw ArrayIsDynamic parametr na Truewartość . Podczas zapisywania tablicy należy dopasować sposób odczytywania tablicy; jeśli zostanie odczytany za pomocą deskryptora, musisz napisać deskryptor. 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 * NumberOfDimensions). Długość rekordu RecordLength określona przez klauzulę w FileOpen funkcji musi być większa lub równa sumie wszystkich bajtów wymaganych do zapisania danych tablicy i deskryptora tablicy. Na przykład następująca deklaracja tablicy wymaga 218 bajtów, gdy tablica jest zapisywana na dysku.

    Dim MyArray(4, 9) As Integer
    
  • Jeśli zapisywana zmienna jest dowolnym innym typem zmiennej (a nie ciągiem o zmiennej długości lub obiektem), FilePut zapisuje tylko dane zmiennych. Długość rekordu określona przez klauzulę RecordLengthFileOpen w funkcji musi być większa lub równa długości zapisywanych danych.

  • FilePut zapisuje elementy struktur tak, jakby zostały napisane indywidualnie, z wyjątkiem braku wypełnienia między elementami. Atrybut VBFixedString można zastosować do pól ciągów w strukturach, aby wskazać rozmiar ciągu podczas zapisywania na dysku.

    Note

    Pola ciągów, które mają więcej bajtów niż określony przez VBFixedString atrybut, są obcinane podczas zapisywania na dysku,

Tryb binarny

W przypadku plików otwartych w Binary trybie większość Random reguł trybu ma zastosowanie z pewnymi wyjątkami. Następujące reguły dotyczące plików otwartych w Binary trybie różnią się od reguł trybu Random :

  • Klauzula RecordLengthFileOpen w funkcji nie ma wpływu. FilePut zapisuje wszystkie zmienne na dysku stale, czyli bez uzupełniania między rekordami.

  • W przypadku dowolnej tablicy innej niż tablica w strukturze FilePut zapisuje tylko dane. Deskryptor nie jest zapisywany.

  • FilePut zapisuje ciągi o zmiennej długości, które nie są elementami struktur bez deskryptora długości dwu bajtów. Liczba zapisanych bajtów jest równa liczbie znaków w ciągu. Na przykład następujące instrukcje zapisują 11 bajtów do pliku o numerze 1:

    Dim hellow As String = "Hello World"
    FilePut(1, hellow)
    
  • Zapisywanie w pliku przy użyciu FilePut funkcji wymaga Write dostępu z wyliczenia FileIOPermissionAccess .

Zobacz też

Dotyczy

FilePut(Object, Object, Object)

Uwaga

Use FilePutObject to write Object types, or coerce FileNumber and RecordNumber to Integer for writing non-Object types

Uwaga

This member has been deprecated. Please use FilePutObject to write Object types, or coerce FileNumber and RecordNumber to Integer for writing non-Object types. http://go.microsoft.com/fwlink/?linkid=14202

Zapisuje dane ze zmiennej do pliku dysku. Ta My funkcja zapewnia lepszą wydajność i wydajność operacji we/wy plików niż FilePut. Aby uzyskać więcej informacji, zobacz FileSystem.

[System.Obsolete("Use FilePutObject to write Object types, or coerce FileNumber and RecordNumber to Integer for writing non-Object types")]
public static void FilePut(object FileNumber, object Value, object RecordNumber = -1);
[System.Obsolete("This member has been deprecated. Please use FilePutObject to write Object types, or coerce FileNumber and RecordNumber to Integer for writing non-Object types. http://go.microsoft.com/fwlink/?linkid=14202")]
public static void FilePut(object FileNumber, object Value, object RecordNumber = -1);
[<System.Obsolete("Use FilePutObject to write Object types, or coerce FileNumber and RecordNumber to Integer for writing non-Object types")>]
static member FilePut : obj * obj * obj -> unit
[<System.Obsolete("This member has been deprecated. Please use FilePutObject to write Object types, or coerce FileNumber and RecordNumber to Integer for writing non-Object types. http://go.microsoft.com/fwlink/?linkid=14202")>]
static member FilePut : obj * obj * obj -> unit
Public Sub FilePut (FileNumber As Object, Value As Object, Optional RecordNumber As Object = -1)

Parametry

FileNumber
Object

To jest wymagane. Dowolny prawidłowy numer pliku.

Value
Object

To jest wymagane. Prawidłowa nazwa zmiennej, która zawiera dane zapisane na dysku.

RecordNumber
Object

Optional. Liczba rekordów (Random pliki trybu) lub liczba bajtów (Binary pliki trybu), w których rozpoczyna się zapisywanie.

Atrybuty

Wyjątki

RecordNumber < 1 i nie równe -1.

Tryb pliku jest nieprawidłowy.

Zobacz też

Dotyczy

FilePut(Int32, ValueType, Int64)

Zapisuje dane ze zmiennej do pliku dysku. Ta My funkcja zapewnia lepszą wydajność i wydajność operacji we/wy plików niż FilePut. Aby uzyskać więcej informacji, zobacz FileSystem.

public static void FilePut(int FileNumber, ValueType Value, long RecordNumber = -1);
static member FilePut : int * ValueType * int64 -> unit
Public Sub FilePut (FileNumber As Integer, Value As ValueType, Optional RecordNumber As Long = -1)

Parametry

FileNumber
Int32

To jest wymagane. Dowolny prawidłowy numer pliku.

Value
ValueType

To jest wymagane. Prawidłowa nazwa zmiennej, która zawiera dane zapisane na dysku.

RecordNumber
Int64

Optional. Liczba rekordów (Random pliki trybu) lub liczba bajtów (Binary pliki trybu), w których rozpoczyna się zapisywanie.

Wyjątki

RecordNumber < 1 i nie równe -1.

Tryb pliku jest nieprawidłowy.

Przykłady

W tym przykładzie użyto funkcji do zapisywania FilePut danych w pliku. Pięć rekordów struktury Person jest zapisywanych w pliku.

Structure Person
    Public ID As Integer
    Public Name As String
End Structure

Sub WriteData()
    Dim PatientRecord As Person
    Dim recordNumber As Integer
    '    Open file for random access.
    FileOpen(1, "C:\TESTFILE.txt", OpenMode.Binary)
    ' Loop 5 times.
    For recordNumber = 1 To 5
        ' Define ID.
        PatientRecord.ID = recordNumber
        ' Create a string.
        PatientRecord.Name = "Name " & recordNumber
        ' Write record to file.
        FilePut(1, PatientRecord)
    Next recordNumber
    FileClose(1)
End Sub

Uwagi

FilePutjest prawidłowy tylko w Random trybie i .Binary

Dane zapisywane FilePut za pomocą polecenia są zwykle odczytywane z pliku przy użyciu polecenia FileGet.

Pierwszy rekord lub bajt w pliku znajduje się na pozycji 1, drugi rekord lub bajt znajduje się na pozycji 2 itd. Jeśli pominięto RecordNumber, zostanie zapisany następny rekord lub bajt po ostatniej FileGet funkcji lub FilePut wskazywany przez ostatnią Seek funkcję.

StringIsFixedLength Argument określa, czy funkcja interpretuje ciągi jako zmienne, czy stałą długość. FilePut nie zapisuje deskryptora długości, gdy argument ma wartość True. Jeśli używasz polecenia StringIsFixedLength = True z elementem FilePut, musisz wykonać to samo z elementem FileGeti musisz 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 wRecordLength klauzuli FileOpen funkcji, FilePut zapisuje kolejne rekordy w granicach długości rekordu. Odstęp między końcem jednego rekordu a rozpoczęciem następnego rekordu jest dopełniany istniejącą zawartością buforu pliku. Ponieważ nie można określić ilości danych uzupełniania z pewnością, 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 w RecordLength klauzuli FileOpen funkcji, zostanie zgłoszony wyjątek.

  • Jeśli zapisywana zmienna jest ciągiem, FilePut zapisuje deskryptor dwu bajtowy zawierający długość ciągu, a następnie zapisuje dane, które przechodzą do zmiennej. W związku z tym długość rekordu określona przez klauzulę RecordLength w FileOpen funkcji musi wynosić co najmniej dwa bajty większe niż rzeczywista długość ciągu.

  • Jeśli zapisywana zmienna jest obiektem zawierającym typ liczbowy, FilePut zapisuje dwa bajty identyfikujące VarType obiekt, a następnie zapisuje zmienną. Na przykład podczas pisania obiektu zawierającego liczbę całkowitą FilePut zapisuje sześć bajtów: dwa bajty identyfikujące obiekt jako VarType(3) (Integer) i cztery bajty zawierające dane. Długość rekordu RecordLength określona przez parametr w FileOpen funkcji musi wynosić co najmniej dwa bajty większe niż rzeczywista liczba bajtów wymaganych do przechowywania zmiennej.

  • Jeśli zapisywana zmienna jest obiektem zawierającym ciąg, FilePut zapisuje deskryptor dwu bajtowy identyfikujący VarType(8) obiekt, deskryptor dwu bajtowy wskazujący długość ciągu, a następnie zapisuje dane ciągu. Długość rekordu RecordLength określona przez parametr w FileOpen 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 parametru StringIsFixedLength , a odczytany ciąg powinien być prawidłową długością.

  • Jeśli zapisywana zmienna jest tablicą, możesz wybrać, czy napisać deskryptor dla rozmiaru i wymiarów tablicy. Visual Basic 6.0 i starszych wersjach zapisują deskryptor plików dla tablicy dynamicznej, ale nie dla tablicy o stałym rozmiarze. Visual Basic 2005 domyślnie nie zapisuje deskryptora. Aby napisać deskryptor, ustaw ArrayIsDynamic parametr na Truewartość . Podczas zapisywania tablicy należy dopasować sposób odczytywania tablicy; jeśli zostanie odczytany za pomocą deskryptora, musisz napisać deskryptor. 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 * NumberOfDimensions). Długość rekordu RecordLength określona przez klauzulę w FileOpen funkcji musi być większa lub równa sumie wszystkich bajtów wymaganych do zapisania danych tablicy i deskryptora tablicy. Na przykład następująca deklaracja tablicy wymaga 218 bajtów, gdy tablica jest zapisywana na dysku.

    Dim MyArray(4, 9) As Integer
    
  • Jeśli zapisywana zmienna jest dowolnym innym typem zmiennej (a nie ciągiem o zmiennej długości lub obiektem), FilePut zapisuje tylko dane zmiennych. Długość rekordu określona przez klauzulę RecordLengthFileOpen w funkcji musi być większa lub równa długości zapisywanych danych.

  • FilePut zapisuje elementy struktur tak, jakby zostały napisane indywidualnie, z wyjątkiem braku wypełnienia między elementami. Atrybut VBFixedString można zastosować do pól ciągów w strukturach, aby wskazać rozmiar ciągu podczas zapisywania na dysku.

    Note

    Pola ciągów, które mają więcej bajtów niż określony przez VBFixedString atrybut, są obcinane podczas zapisywania na dysku,

Tryb binarny

W przypadku plików otwartych w Binary trybie większość Random reguł trybu ma zastosowanie z pewnymi wyjątkami. Następujące reguły dotyczące plików otwartych w Binary trybie różnią się od reguł trybu Random :

  • Klauzula RecordLengthFileOpen w funkcji nie ma wpływu. FilePut zapisuje wszystkie zmienne na dysku stale, czyli bez uzupełniania między rekordami.

  • W przypadku dowolnej tablicy innej niż tablica w strukturze FilePut zapisuje tylko dane. Deskryptor nie jest zapisywany.

  • FilePut zapisuje ciągi o zmiennej długości, które nie są elementami struktur bez deskryptora długości dwu bajtów. Liczba zapisanych bajtów jest równa liczbie znaków w ciągu. Na przykład następujące instrukcje zapisują 11 bajtów do pliku o numerze 1:

    Dim hellow As String = "Hello World"
    FilePut(1, hellow)
    
  • Zapisywanie w pliku przy użyciu FilePut funkcji wymaga Write dostępu z wyliczenia FileIOPermissionAccess .

Zobacz też

Dotyczy

FilePut(Int32, Single, Int64)

Zapisuje dane ze zmiennej do pliku dysku. Ta My funkcja zapewnia lepszą wydajność i wydajność operacji we/wy plików niż FilePut. Aby uzyskać więcej informacji, zobacz FileSystem.

public static void FilePut(int FileNumber, float Value, long RecordNumber = -1);
static member FilePut : int * single * int64 -> unit
Public Sub FilePut (FileNumber As Integer, Value As Single, Optional RecordNumber As Long = -1)

Parametry

FileNumber
Int32

To jest wymagane. Dowolny prawidłowy numer pliku.

Value
Single

To jest wymagane. Prawidłowa nazwa zmiennej, która zawiera dane zapisane na dysku.

RecordNumber
Int64

Optional. Liczba rekordów (Random pliki trybu) lub liczba bajtów (Binary pliki trybu), w których rozpoczyna się zapisywanie.

Wyjątki

RecordNumber < 1 i nie równe -1.

Tryb pliku jest nieprawidłowy.

Przykłady

W tym przykładzie użyto funkcji do zapisywania FilePut danych w pliku. Pięć rekordów struktury Person jest zapisywanych w pliku.

Structure Person
    Public ID As Integer
    Public Name As String
End Structure

Sub WriteData()
    Dim PatientRecord As Person
    Dim recordNumber As Integer
    '    Open file for random access.
    FileOpen(1, "C:\TESTFILE.txt", OpenMode.Binary)
    ' Loop 5 times.
    For recordNumber = 1 To 5
        ' Define ID.
        PatientRecord.ID = recordNumber
        ' Create a string.
        PatientRecord.Name = "Name " & recordNumber
        ' Write record to file.
        FilePut(1, PatientRecord)
    Next recordNumber
    FileClose(1)
End Sub

Uwagi

FilePutjest prawidłowy tylko w Random trybie i .Binary

Dane zapisywane FilePut za pomocą polecenia są zwykle odczytywane z pliku przy użyciu polecenia FileGet.

Pierwszy rekord lub bajt w pliku znajduje się na pozycji 1, drugi rekord lub bajt znajduje się na pozycji 2 itd. Jeśli pominięto RecordNumber, zostanie zapisany następny rekord lub bajt po ostatniej FileGet funkcji lub FilePut wskazywany przez ostatnią Seek funkcję.

StringIsFixedLength Argument określa, czy funkcja interpretuje ciągi jako zmienne, czy stałą długość. FilePut nie zapisuje deskryptora długości, gdy argument ma wartość True. Jeśli używasz polecenia StringIsFixedLength = True z elementem FilePut, musisz wykonać to samo z elementem FileGeti musisz 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 klauzuli FileOpen funkcji, FilePut zapisuje kolejne rekordy w granicach długości rekordu. Odstęp między końcem jednego rekordu a rozpoczęciem następnego rekordu jest dopełniany istniejącą zawartością buforu pliku. Ponieważ nie można określić ilości danych uzupełniania z pewnością, 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 w RecordLength klauzuli FileOpen funkcji, zostanie zgłoszony wyjątek.

  • Jeśli zapisywana zmienna jest ciągiem, FilePut zapisuje deskryptor dwu bajtowy zawierający długość ciągu, a następnie zapisuje dane, które przechodzą do zmiennej. W związku z tym długość rekordu określona przez klauzulę RecordLength w FileOpen funkcji musi wynosić co najmniej dwa bajty większe niż rzeczywista długość ciągu.

  • Jeśli zapisywana zmienna jest obiektem zawierającym typ liczbowy, FilePut zapisuje dwa bajty identyfikujące VarType obiekt, a następnie zapisuje zmienną. Na przykład podczas pisania obiektu zawierającego liczbę całkowitą FilePut zapisuje sześć bajtów: dwa bajty identyfikujące obiekt jako VarType(3) (Integer) i cztery bajty zawierające dane. Długość rekordu RecordLength określona przez parametr w FileOpen funkcji musi wynosić co najmniej dwa bajty większe niż rzeczywista liczba bajtów wymaganych do przechowywania zmiennej.

  • Jeśli zapisywana zmienna jest obiektem zawierającym ciąg, FilePut zapisuje deskryptor dwu bajtowy identyfikujący VarType(8) obiekt, deskryptor dwu bajtowy wskazujący długość ciągu, a następnie zapisuje dane ciągu. Długość rekordu RecordLength określona przez parametr w FileOpen 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 parametru StringIsFixedLength , a odczytany ciąg powinien być prawidłową długością.

  • Jeśli zapisywana zmienna jest tablicą, możesz wybrać, czy napisać deskryptor dla rozmiaru i wymiarów tablicy. Visual Basic 6.0 i starszych wersjach zapisują deskryptor plików dla tablicy dynamicznej, ale nie dla tablicy o stałym rozmiarze. Visual Basic 2005 domyślnie nie zapisuje deskryptora. Aby napisać deskryptor, ustaw ArrayIsDynamic parametr na Truewartość . Podczas zapisywania tablicy należy dopasować sposób odczytywania tablicy; jeśli zostanie odczytany za pomocą deskryptora, musisz napisać deskryptor. 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 * NumberOfDimensions). Długość rekordu RecordLength określona przez klauzulę w FileOpen funkcji musi być większa lub równa sumie wszystkich bajtów wymaganych do zapisania danych tablicy i deskryptora tablicy. Na przykład następująca deklaracja tablicy wymaga 218 bajtów, gdy tablica jest zapisywana na dysku.

    Dim MyArray(4, 9) As Integer
    
  • Jeśli zapisywana zmienna jest dowolnym innym typem zmiennej (a nie ciągiem o zmiennej długości lub obiektem), FilePut zapisuje tylko dane zmiennych. Długość rekordu określona przez klauzulę RecordLengthFileOpen w funkcji musi być większa lub równa długości zapisywanych danych.

  • FilePut zapisuje elementy struktur tak, jakby zostały napisane indywidualnie, z wyjątkiem braku wypełnienia między elementami. Atrybut VBFixedString można zastosować do pól ciągów w strukturach, aby wskazać rozmiar ciągu podczas zapisywania na dysku.

    Note

    Pola ciągów, które mają więcej bajtów niż określony przez VBFixedString atrybut, są obcinane podczas zapisywania na dysku,

Tryb binarny

W przypadku plików otwartych w Binary trybie większość Random reguł trybu ma zastosowanie z pewnymi wyjątkami. Następujące reguły dotyczące plików otwartych w Binary trybie różnią się od reguł trybu Random :

  • Klauzula RecordLengthFileOpen w funkcji nie ma wpływu. FilePut zapisuje wszystkie zmienne na dysku stale, czyli bez uzupełniania między rekordami.

  • W przypadku dowolnej tablicy innej niż tablica w strukturze FilePut zapisuje tylko dane. Deskryptor nie jest zapisywany.

  • FilePut zapisuje ciągi o zmiennej długości, które nie są elementami struktur bez deskryptora długości dwu bajtów. Liczba zapisanych bajtów jest równa liczbie znaków w ciągu. Na przykład następujące instrukcje zapisują 11 bajtów do pliku o numerze 1:

    Dim hellow As String = "Hello World"
    FilePut(1, hellow)
    
  • Zapisywanie w pliku przy użyciu FilePut funkcji wymaga Write dostępu z wyliczenia FileIOPermissionAccess .

Zobacz też

Dotyczy

FilePut(Int32, Int32, Int64)

Zapisuje dane ze zmiennej do pliku dysku. Ta My funkcja zapewnia lepszą wydajność i wydajność operacji we/wy plików niż FilePut. Aby uzyskać więcej informacji, zobacz FileSystem.

public static void FilePut(int FileNumber, int Value, long RecordNumber = -1);
static member FilePut : int * int * int64 -> unit
Public Sub FilePut (FileNumber As Integer, Value As Integer, Optional RecordNumber As Long = -1)

Parametry

FileNumber
Int32

To jest wymagane. Dowolny prawidłowy numer pliku.

Value
Int32

To jest wymagane. Prawidłowa nazwa zmiennej, która zawiera dane zapisane na dysku.

RecordNumber
Int64

Optional. Liczba rekordów (Random pliki trybu) lub liczba bajtów (Binary pliki trybu), w których rozpoczyna się zapisywanie.

Wyjątki

RecordNumber < 1 i nie równe -1.

Tryb pliku jest nieprawidłowy.

Przykłady

W tym przykładzie użyto funkcji do zapisywania FilePut danych w pliku. Pięć rekordów struktury Person jest zapisywanych w pliku.

Structure Person
    Public ID As Integer
    Public Name As String
End Structure

Sub WriteData()
    Dim PatientRecord As Person
    Dim recordNumber As Integer
    '    Open file for random access.
    FileOpen(1, "C:\TESTFILE.txt", OpenMode.Binary)
    ' Loop 5 times.
    For recordNumber = 1 To 5
        ' Define ID.
        PatientRecord.ID = recordNumber
        ' Create a string.
        PatientRecord.Name = "Name " & recordNumber
        ' Write record to file.
        FilePut(1, PatientRecord)
    Next recordNumber
    FileClose(1)
End Sub

Uwagi

FilePutjest prawidłowy tylko w Random trybie i .Binary

Dane zapisywane FilePut za pomocą polecenia są zwykle odczytywane z pliku przy użyciu polecenia FileGet.

Pierwszy rekord lub bajt w pliku znajduje się na pozycji 1, drugi rekord lub bajt znajduje się na pozycji 2 itd. Jeśli pominięto RecordNumber, zostanie zapisany następny rekord lub bajt po ostatniej FileGet funkcji lub FilePut wskazywany przez ostatnią Seek funkcję.

StringIsFixedLength Argument określa, czy funkcja interpretuje ciągi jako zmienne, czy stałą długość. FilePut nie zapisuje deskryptora długości, gdy argument ma wartość True. Jeśli używasz polecenia StringIsFixedLength = True z elementem FilePut, musisz wykonać to samo z elementem FileGeti musisz 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 klauzuli FileOpen funkcji, FilePut zapisuje kolejne rekordy w granicach długości rekordu. Odstęp między końcem jednego rekordu a rozpoczęciem następnego rekordu jest dopełniany istniejącą zawartością buforu pliku. Ponieważ nie można określić ilości danych uzupełniania z pewnością, 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 w RecordLength klauzuli FileOpen funkcji, zostanie zgłoszony wyjątek.

  • Jeśli zapisywana zmienna jest ciągiem, FilePut zapisuje deskryptor dwu bajtowy zawierający długość ciągu, a następnie zapisuje dane, które przechodzą do zmiennej. W związku z tym długość rekordu określona przez klauzulę RecordLength w FileOpen funkcji musi wynosić co najmniej dwa bajty większe niż rzeczywista długość ciągu.

  • Jeśli zapisywana zmienna jest obiektem zawierającym typ liczbowy, FilePut zapisuje dwa bajty identyfikujące VarType obiekt, a następnie zapisuje zmienną. Na przykład podczas pisania obiektu zawierającego liczbę całkowitą FilePut zapisuje sześć bajtów: dwa bajty identyfikujące obiekt jako VarType(3) (Integer) i cztery bajty zawierające dane. Długość rekordu RecordLength określona przez parametr w FileOpen funkcji musi wynosić co najmniej dwa bajty większe niż rzeczywista liczba bajtów wymaganych do przechowywania zmiennej.

  • Jeśli zapisywana zmienna jest obiektem zawierającym ciąg, FilePut zapisuje deskryptor dwu bajtowy identyfikujący VarType(8) obiekt, deskryptor dwu bajtowy wskazujący długość ciągu, a następnie zapisuje dane ciągu. Długość rekordu RecordLength określona przez parametr w FileOpen 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 parametru StringIsFixedLength , a odczytany ciąg powinien być prawidłową długością.

  • Jeśli zapisywana zmienna jest tablicą, możesz wybrać, czy napisać deskryptor dla rozmiaru i wymiarów tablicy. Visual Basic 6.0 i starszych wersjach zapisują deskryptor plików dla tablicy dynamicznej, ale nie dla tablicy o stałym rozmiarze. Visual Basic 2005 domyślnie nie zapisuje deskryptora. Aby napisać deskryptor, ustaw ArrayIsDynamic parametr na Truewartość . Podczas zapisywania tablicy należy dopasować sposób odczytywania tablicy; jeśli zostanie odczytany za pomocą deskryptora, musisz napisać deskryptor. 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 * NumberOfDimensions). Długość rekordu RecordLength określona przez klauzulę w FileOpen funkcji musi być większa lub równa sumie wszystkich bajtów wymaganych do zapisania danych tablicy i deskryptora tablicy. Na przykład następująca deklaracja tablicy wymaga 218 bajtów, gdy tablica jest zapisywana na dysku.

    Dim MyArray(4, 9) As Integer
    
  • Jeśli zapisywana zmienna jest dowolnym innym typem zmiennej (a nie ciągiem o zmiennej długości lub obiektem), FilePut zapisuje tylko dane zmiennych. Długość rekordu określona przez klauzulę RecordLengthFileOpen w funkcji musi być większa lub równa długości zapisywanych danych.

  • FilePut zapisuje elementy struktur tak, jakby zostały napisane indywidualnie, z wyjątkiem braku wypełnienia między elementami. Atrybut VBFixedString można zastosować do pól ciągów w strukturach, aby wskazać rozmiar ciągu podczas zapisywania na dysku.

    Note

    Pola ciągów, które mają więcej bajtów niż określony przez VBFixedString atrybut, są obcinane podczas zapisywania na dysku,

Tryb binarny

W przypadku plików otwartych w Binary trybie większość Random reguł trybu ma zastosowanie z pewnymi wyjątkami. Następujące reguły dotyczące plików otwartych w Binary trybie różnią się od reguł trybu Random :

  • Klauzula RecordLengthFileOpen w funkcji nie ma wpływu. FilePut zapisuje wszystkie zmienne na dysku stale, czyli bez uzupełniania między rekordami.

  • W przypadku dowolnej tablicy innej niż tablica w strukturze FilePut zapisuje tylko dane. Deskryptor nie jest zapisywany.

  • FilePut zapisuje ciągi o zmiennej długości, które nie są elementami struktur bez deskryptora długości dwu bajtów. Liczba zapisanych bajtów jest równa liczbie znaków w ciągu. Na przykład następujące instrukcje zapisują 11 bajtów do pliku o numerze 1:

    Dim hellow As String = "Hello World"
    FilePut(1, hellow)
    
  • Zapisywanie w pliku przy użyciu FilePut funkcji wymaga Write dostępu z wyliczenia FileIOPermissionAccess .

Zobacz też

Dotyczy

FilePut(Int32, Array, Int64, Boolean, Boolean)

Zapisuje dane ze zmiennej do pliku dysku. Ta My funkcja zapewnia lepszą wydajność i wydajność operacji we/wy plików niż FilePut. Aby uzyskać więcej informacji, zobacz FileSystem.

public static void FilePut(int FileNumber, Array Value, long RecordNumber = -1, bool ArrayIsDynamic = false, bool StringIsFixedLength = false);
static member FilePut : int * Array * int64 * bool * bool -> unit
Public Sub FilePut (FileNumber As Integer, Value As Array, Optional RecordNumber As Long = -1, Optional ArrayIsDynamic As Boolean = false, Optional StringIsFixedLength As Boolean = false)

Parametry

FileNumber
Int32

To jest wymagane. Dowolny prawidłowy numer pliku.

Value
Array

To jest wymagane. Prawidłowa nazwa zmiennej, która zawiera dane zapisane na dysku.

RecordNumber
Int64

Optional. Liczba rekordów (Random pliki trybu) lub liczba bajtów (Binary pliki trybu), w których rozpoczyna się zapisywanie.

ArrayIsDynamic
Boolean

Optional. Dotyczy tylko podczas pisania tablicy. Określa, czy tablica ma być traktowana jako dynamiczna, oraz czy należy napisać deskryptor tablicy dla ciągu, który opisuje długość.

StringIsFixedLength
Boolean

Optional. Dotyczy tylko podczas pisania ciągu. Określa, czy do pliku ma być zapisywany deskryptor długości ciągu dwu bajtowego. Wartość domyślna to False.

Wyjątki

RecordNumber < 1 i nie równe -1.

Tryb pliku jest nieprawidłowy.

Przykłady

W tym przykładzie użyto funkcji do zapisywania FilePut danych w pliku. Pięć rekordów struktury Person jest zapisywanych w pliku.

Structure Person
    Public ID As Integer
    Public Name As String
End Structure

Sub WriteData()
    Dim PatientRecord As Person
    Dim recordNumber As Integer
    '    Open file for random access.
    FileOpen(1, "C:\TESTFILE.txt", OpenMode.Binary)
    ' Loop 5 times.
    For recordNumber = 1 To 5
        ' Define ID.
        PatientRecord.ID = recordNumber
        ' Create a string.
        PatientRecord.Name = "Name " & recordNumber
        ' Write record to file.
        FilePut(1, PatientRecord)
    Next recordNumber
    FileClose(1)
End Sub

Uwagi

FilePutjest prawidłowy tylko w Random trybie i .Binary

Dane zapisywane FilePut za pomocą polecenia są zwykle odczytywane z pliku przy użyciu polecenia FileGet.

Pierwszy rekord lub bajt w pliku znajduje się na pozycji 1, drugi rekord lub bajt znajduje się na pozycji 2 itd. Jeśli pominięto RecordNumber, zostanie zapisany następny rekord lub bajt po ostatniej FileGet funkcji lub FilePut wskazywany przez ostatnią Seek funkcję.

StringIsFixedLength Argument określa, czy funkcja interpretuje ciągi jako zmienne, czy stałą długość. FilePut nie zapisuje deskryptora długości, gdy argument ma wartość True. Jeśli używasz polecenia StringIsFixedLength = True z elementem FilePut, musisz wykonać to samo z elementem FileGeti musisz 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 klauzuli FileOpen funkcji, FilePut zapisuje kolejne rekordy w granicach długości rekordu. Odstęp między końcem jednego rekordu a rozpoczęciem następnego rekordu jest dopełniany istniejącą zawartością buforu pliku. Ponieważ nie można określić ilości danych uzupełniania z pewnością, 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 w RecordLength klauzuli FileOpen funkcji, zostanie zgłoszony wyjątek.

  • Jeśli zapisywana zmienna jest ciągiem, FilePut zapisuje deskryptor dwu bajtowy zawierający długość ciągu, a następnie zapisuje dane, które przechodzą do zmiennej. W związku z tym długość rekordu określona przez klauzulę RecordLength w FileOpen funkcji musi wynosić co najmniej dwa bajty większe niż rzeczywista długość ciągu.

  • Jeśli zapisywana zmienna jest obiektem zawierającym typ liczbowy, FilePut zapisuje dwa bajty identyfikujące VarType obiekt, a następnie zapisuje zmienną. Na przykład podczas pisania obiektu zawierającego liczbę całkowitą FilePut zapisuje sześć bajtów: dwa bajty identyfikujące obiekt jako VarType(3) (Integer) i cztery bajty zawierające dane. Długość rekordu RecordLength określona przez parametr w FileOpen funkcji musi wynosić co najmniej dwa bajty większe niż rzeczywista liczba bajtów wymaganych do przechowywania zmiennej.

  • Jeśli zapisywana zmienna jest obiektem zawierającym ciąg, FilePut zapisuje deskryptor dwu bajtowy identyfikujący VarType(8) obiekt, deskryptor dwu bajtowy wskazujący długość ciągu, a następnie zapisuje dane ciągu. Długość rekordu RecordLength określona przez parametr w FileOpen 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 parametru StringIsFixedLength , a odczytany ciąg powinien być prawidłową długością.

  • Jeśli zapisywana zmienna jest tablicą, możesz wybrać, czy napisać deskryptor dla rozmiaru i wymiarów tablicy. Visual Basic 6.0 i starszych wersjach zapisują deskryptor plików dla tablicy dynamicznej, ale nie dla tablicy o stałym rozmiarze. Visual Basic 2005 domyślnie nie zapisuje deskryptora. Aby napisać deskryptor, ustaw ArrayIsDynamic parametr na Truewartość . Podczas zapisywania tablicy należy dopasować sposób odczytywania tablicy; jeśli zostanie odczytany za pomocą deskryptora, musisz napisać deskryptor. 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 * NumberOfDimensions). Długość rekordu RecordLength określona przez klauzulę w FileOpen funkcji musi być większa lub równa sumie wszystkich bajtów wymaganych do zapisania danych tablicy i deskryptora tablicy. Na przykład następująca deklaracja tablicy wymaga 218 bajtów, gdy tablica jest zapisywana na dysku.

    Dim MyArray(4, 9) As Integer
    
  • Jeśli zapisywana zmienna jest dowolnym innym typem zmiennej (a nie ciągiem o zmiennej długości lub obiektem), FilePut zapisuje tylko dane zmiennych. Długość rekordu określona przez klauzulę RecordLengthFileOpen w funkcji musi być większa lub równa długości zapisywanych danych.

  • FilePut zapisuje elementy struktur tak, jakby zostały napisane indywidualnie, z wyjątkiem braku wypełnienia między elementami. Atrybut VBFixedString można zastosować do pól ciągów w strukturach, aby wskazać rozmiar ciągu podczas zapisywania na dysku.

    Note

    Pola ciągów, które mają więcej bajtów niż określony przez VBFixedString atrybut, są obcinane podczas zapisywania na dysku,

Tryb binarny

W przypadku plików otwartych w Binary trybie większość Random reguł trybu ma zastosowanie z pewnymi wyjątkami. Następujące reguły dotyczące plików otwartych w Binary trybie różnią się od reguł trybu Random :

  • Klauzula RecordLengthFileOpen w funkcji nie ma wpływu. FilePut zapisuje wszystkie zmienne na dysku stale, czyli bez uzupełniania między rekordami.

  • W przypadku dowolnej tablicy innej niż tablica w strukturze FilePut zapisuje tylko dane. Deskryptor nie jest zapisywany.

  • FilePut zapisuje ciągi o zmiennej długości, które nie są elementami struktur bez deskryptora długości dwu bajtów. Liczba zapisanych bajtów jest równa liczbie znaków w ciągu. Na przykład następujące instrukcje zapisują 11 bajtów do pliku o numerze 1:

    Dim hellow As String = "Hello World"
    FilePut(1, hellow)
    
  • Zapisywanie w pliku przy użyciu FilePut funkcji wymaga Write dostępu z wyliczenia FileIOPermissionAccess .

Zobacz też

Dotyczy

FilePut(Int32, Double, Int64)

Zapisuje dane ze zmiennej do pliku dysku. Ta My funkcja zapewnia lepszą wydajność i wydajność operacji we/wy plików niż FilePut. Aby uzyskać więcej informacji, zobacz FileSystem.

public static void FilePut(int FileNumber, double Value, long RecordNumber = -1);
static member FilePut : int * double * int64 -> unit
Public Sub FilePut (FileNumber As Integer, Value As Double, Optional RecordNumber As Long = -1)

Parametry

FileNumber
Int32

To jest wymagane. Dowolny prawidłowy numer pliku.

Value
Double

To jest wymagane. Prawidłowa nazwa zmiennej, która zawiera dane zapisane na dysku.

RecordNumber
Int64

Optional. Liczba rekordów (Random pliki trybu) lub liczba bajtów (Binary pliki trybu), w których rozpoczyna się zapisywanie.

Wyjątki

RecordNumber < 1 i nie równe -1.

Tryb pliku jest nieprawidłowy.

Przykłady

W tym przykładzie użyto funkcji do zapisywania FilePut danych w pliku. Pięć rekordów struktury Person jest zapisywanych w pliku.

Structure Person
    Public ID As Integer
    Public Name As String
End Structure

Sub WriteData()
    Dim PatientRecord As Person
    Dim recordNumber As Integer
    '    Open file for random access.
    FileOpen(1, "C:\TESTFILE.txt", OpenMode.Binary)
    ' Loop 5 times.
    For recordNumber = 1 To 5
        ' Define ID.
        PatientRecord.ID = recordNumber
        ' Create a string.
        PatientRecord.Name = "Name " & recordNumber
        ' Write record to file.
        FilePut(1, PatientRecord)
    Next recordNumber
    FileClose(1)
End Sub

Uwagi

FilePutjest prawidłowy tylko w Random trybie i .Binary

Dane zapisywane FilePut za pomocą polecenia są zwykle odczytywane z pliku przy użyciu polecenia FileGet.

Pierwszy rekord lub bajt w pliku znajduje się na pozycji 1, drugi rekord lub bajt znajduje się na pozycji 2 itd. Jeśli pominięto RecordNumber, zostanie zapisany następny rekord lub bajt po ostatniej FileGet funkcji lub FilePut wskazywany przez ostatnią Seek funkcję.

StringIsFixedLength Argument określa, czy funkcja interpretuje ciągi jako zmienne, czy stałą długość. FilePut nie zapisuje deskryptora długości, gdy argument ma wartość True. Jeśli używasz polecenia StringIsFixedLength = True z elementem FilePut, musisz wykonać to samo z elementem FileGeti musisz 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 klauzuli FileOpen funkcji, FilePut zapisuje kolejne rekordy w granicach długości rekordu. Odstęp między końcem jednego rekordu a rozpoczęciem następnego rekordu jest dopełniany istniejącą zawartością buforu pliku. Ponieważ nie można określić ilości danych uzupełniania z pewnością, 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 w RecordLength klauzuli FileOpen funkcji, zostanie zgłoszony wyjątek.

  • Jeśli zapisywana zmienna jest ciągiem, FilePut zapisuje deskryptor dwu bajtowy zawierający długość ciągu, a następnie zapisuje dane, które przechodzą do zmiennej. W związku z tym długość rekordu określona przez klauzulę RecordLength w FileOpen funkcji musi wynosić co najmniej dwa bajty większe niż rzeczywista długość ciągu.

  • Jeśli zapisywana zmienna jest obiektem zawierającym typ liczbowy, FilePut zapisuje dwa bajty identyfikujące VarType obiekt, a następnie zapisuje zmienną. Na przykład podczas pisania obiektu zawierającego liczbę całkowitą FilePut zapisuje sześć bajtów: dwa bajty identyfikujące obiekt jako VarType(3) (Integer) i cztery bajty zawierające dane. Długość rekordu RecordLength określona przez parametr w FileOpen funkcji musi wynosić co najmniej dwa bajty większe niż rzeczywista liczba bajtów wymaganych do przechowywania zmiennej.

  • Jeśli zapisywana zmienna jest obiektem zawierającym ciąg, FilePut zapisuje deskryptor dwu bajtowy identyfikujący VarType(8) obiekt, deskryptor dwu bajtowy wskazujący długość ciągu, a następnie zapisuje dane ciągu. Długość rekordu RecordLength określona przez parametr w FileOpen 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 parametru StringIsFixedLength , a odczytany ciąg powinien być prawidłową długością.

  • Jeśli zapisywana zmienna jest tablicą, możesz wybrać, czy napisać deskryptor dla rozmiaru i wymiarów tablicy. Visual Basic 6.0 i starszych wersjach zapisują deskryptor plików dla tablicy dynamicznej, ale nie dla tablicy o stałym rozmiarze. Visual Basic 2005 domyślnie nie zapisuje deskryptora. Aby napisać deskryptor, ustaw ArrayIsDynamic parametr na Truewartość . Podczas zapisywania tablicy należy dopasować sposób odczytywania tablicy; jeśli zostanie odczytany za pomocą deskryptora, musisz napisać deskryptor. 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 * NumberOfDimensions). Długość rekordu RecordLength określona przez klauzulę w FileOpen funkcji musi być większa lub równa sumie wszystkich bajtów wymaganych do zapisania danych tablicy i deskryptora tablicy. Na przykład następująca deklaracja tablicy wymaga 218 bajtów, gdy tablica jest zapisywana na dysku.

    Dim MyArray(4, 9) As Integer
    
  • Jeśli zapisywana zmienna jest dowolnym innym typem zmiennej (a nie ciągiem o zmiennej długości lub obiektem), FilePut zapisuje tylko dane zmiennych. Długość rekordu określona przez klauzulę RecordLengthFileOpen w funkcji musi być większa lub równa długości zapisywanych danych.

  • FilePut zapisuje elementy struktur tak, jakby zostały napisane indywidualnie, z wyjątkiem braku wypełnienia między elementami. Atrybut VBFixedString można zastosować do pól ciągów w strukturach, aby wskazać rozmiar ciągu podczas zapisywania na dysku.

    Note

    Pola ciągów, które mają więcej bajtów niż określony przez VBFixedString atrybut, są obcinane podczas zapisywania na dysku,

Tryb binarny

W przypadku plików otwartych w Binary trybie większość Random reguł trybu ma zastosowanie z pewnymi wyjątkami. Następujące reguły dotyczące plików otwartych w Binary trybie różnią się od reguł trybu Random :

  • Klauzula RecordLengthFileOpen w funkcji nie ma wpływu. FilePut zapisuje wszystkie zmienne na dysku stale, czyli bez uzupełniania między rekordami.

  • W przypadku dowolnej tablicy innej niż tablica w strukturze FilePut zapisuje tylko dane. Deskryptor nie jest zapisywany.

  • FilePut zapisuje ciągi o zmiennej długości, które nie są elementami struktur bez deskryptora długości dwu bajtów. Liczba zapisanych bajtów jest równa liczbie znaków w ciągu. Na przykład następujące instrukcje zapisują 11 bajtów do pliku o numerze 1:

    Dim hellow As String = "Hello World"
    FilePut(1, hellow)
    
  • Zapisywanie w pliku przy użyciu FilePut funkcji wymaga Write dostępu z wyliczenia FileIOPermissionAccess .

Zobacz też

Dotyczy

FilePut(Int32, Decimal, Int64)

Zapisuje dane ze zmiennej do pliku dysku. Ta My funkcja zapewnia lepszą wydajność i wydajność operacji we/wy plików niż FilePut. Aby uzyskać więcej informacji, zobacz FileSystem.

public static void FilePut(int FileNumber, decimal Value, long RecordNumber = -1);
static member FilePut : int * decimal * int64 -> unit
Public Sub FilePut (FileNumber As Integer, Value As Decimal, Optional RecordNumber As Long = -1)

Parametry

FileNumber
Int32

To jest wymagane. Dowolny prawidłowy numer pliku.

Value
Decimal

To jest wymagane. Prawidłowa nazwa zmiennej, która zawiera dane zapisane na dysku.

RecordNumber
Int64

Optional. Liczba rekordów (Random pliki trybu) lub liczba bajtów (Binary pliki trybu), w których rozpoczyna się zapisywanie.

Wyjątki

RecordNumber < 1 i nie równe -1.

Tryb pliku jest nieprawidłowy.

Przykłady

W tym przykładzie użyto funkcji do zapisywania FilePut danych w pliku. Pięć rekordów struktury Person jest zapisywanych w pliku.

Structure Person
    Public ID As Integer
    Public Name As String
End Structure

Sub WriteData()
    Dim PatientRecord As Person
    Dim recordNumber As Integer
    '    Open file for random access.
    FileOpen(1, "C:\TESTFILE.txt", OpenMode.Binary)
    ' Loop 5 times.
    For recordNumber = 1 To 5
        ' Define ID.
        PatientRecord.ID = recordNumber
        ' Create a string.
        PatientRecord.Name = "Name " & recordNumber
        ' Write record to file.
        FilePut(1, PatientRecord)
    Next recordNumber
    FileClose(1)
End Sub

Uwagi

FilePutjest prawidłowy tylko w Random trybie i .Binary

Dane zapisywane FilePut za pomocą polecenia są zwykle odczytywane z pliku przy użyciu polecenia FileGet.

Pierwszy rekord lub bajt w pliku znajduje się na pozycji 1, drugi rekord lub bajt znajduje się na pozycji 2 itd. Jeśli pominięto RecordNumber, zostanie zapisany następny rekord lub bajt po ostatniej FileGet funkcji lub FilePut wskazywany przez ostatnią Seek funkcję.

StringIsFixedLength Argument określa, czy funkcja interpretuje ciągi jako zmienne, czy stałą długość. FilePut nie zapisuje deskryptora długości, gdy argument ma wartość True. Jeśli używasz polecenia StringIsFixedLength = True z elementem FilePut, musisz wykonać to samo z elementem FileGeti musisz 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 klauzuli FileOpen funkcji, FilePut zapisuje kolejne rekordy w granicach długości rekordu. Odstęp między końcem jednego rekordu a rozpoczęciem następnego rekordu jest dopełniany istniejącą zawartością buforu pliku. Ponieważ nie można określić ilości danych uzupełniania z pewnością, 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 w RecordLength klauzuli FileOpen funkcji, zostanie zgłoszony wyjątek.

  • Jeśli zapisywana zmienna jest ciągiem, FilePut zapisuje deskryptor dwu bajtowy zawierający długość ciągu, a następnie zapisuje dane, które przechodzą do zmiennej. W związku z tym długość rekordu określona przez klauzulę RecordLength w FileOpen funkcji musi wynosić co najmniej dwa bajty większe niż rzeczywista długość ciągu.

  • Jeśli zapisywana zmienna jest obiektem zawierającym typ liczbowy, FilePut zapisuje dwa bajty identyfikujące VarType obiekt, a następnie zapisuje zmienną. Na przykład podczas pisania obiektu zawierającego liczbę całkowitą FilePut zapisuje sześć bajtów: dwa bajty identyfikujące obiekt jako VarType(3) (Integer) i cztery bajty zawierające dane. Długość rekordu RecordLength określona przez parametr w FileOpen funkcji musi wynosić co najmniej dwa bajty większe niż rzeczywista liczba bajtów wymaganych do przechowywania zmiennej.

  • Jeśli zapisywana zmienna jest obiektem zawierającym ciąg, FilePut zapisuje deskryptor dwu bajtowy identyfikujący VarType(8) obiekt, deskryptor dwu bajtowy wskazujący długość ciągu, a następnie zapisuje dane ciągu. Długość rekordu RecordLength określona przez parametr w FileOpen 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 parametru StringIsFixedLength , a odczytany ciąg powinien być prawidłową długością.

  • Jeśli zapisywana zmienna jest tablicą, możesz wybrać, czy napisać deskryptor dla rozmiaru i wymiarów tablicy. Visual Basic 6.0 i starszych wersjach zapisują deskryptor plików dla tablicy dynamicznej, ale nie dla tablicy o stałym rozmiarze. Visual Basic 2005 domyślnie nie zapisuje deskryptora. Aby napisać deskryptor, ustaw ArrayIsDynamic parametr na Truewartość . Podczas zapisywania tablicy należy dopasować sposób odczytywania tablicy; jeśli zostanie odczytany za pomocą deskryptora, musisz napisać deskryptor. 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 * NumberOfDimensions). Długość rekordu RecordLength określona przez klauzulę w FileOpen funkcji musi być większa lub równa sumie wszystkich bajtów wymaganych do zapisania danych tablicy i deskryptora tablicy. Na przykład następująca deklaracja tablicy wymaga 218 bajtów, gdy tablica jest zapisywana na dysku.

    Dim MyArray(4, 9) As Integer
    
  • Jeśli zapisywana zmienna jest dowolnym innym typem zmiennej (a nie ciągiem o zmiennej długości lub obiektem), FilePut zapisuje tylko dane zmiennych. Długość rekordu określona przez klauzulę RecordLengthFileOpen w funkcji musi być większa lub równa długości zapisywanych danych.

  • FilePut zapisuje elementy struktur tak, jakby zostały napisane indywidualnie, z wyjątkiem braku wypełnienia między elementami. Atrybut VBFixedString można zastosować do pól ciągów w strukturach, aby wskazać rozmiar ciągu podczas zapisywania na dysku.

    Note

    Pola ciągów, które mają więcej bajtów niż określony przez VBFixedString atrybut, są obcinane podczas zapisywania na dysku,

Tryb binarny

W przypadku plików otwartych w Binary trybie większość Random reguł trybu ma zastosowanie z pewnymi wyjątkami. Następujące reguły dotyczące plików otwartych w Binary trybie różnią się od reguł trybu Random :

  • Klauzula RecordLengthFileOpen w funkcji nie ma wpływu. FilePut zapisuje wszystkie zmienne na dysku stale, czyli bez uzupełniania między rekordami.

  • W przypadku dowolnej tablicy innej niż tablica w strukturze FilePut zapisuje tylko dane. Deskryptor nie jest zapisywany.

  • FilePut zapisuje ciągi o zmiennej długości, które nie są elementami struktur bez deskryptora długości dwu bajtów. Liczba zapisanych bajtów jest równa liczbie znaków w ciągu. Na przykład następujące instrukcje zapisują 11 bajtów do pliku o numerze 1:

    Dim hellow As String = "Hello World"
    FilePut(1, hellow)
    
  • Zapisywanie w pliku przy użyciu FilePut funkcji wymaga Write dostępu z wyliczenia FileIOPermissionAccess .

Zobacz też

Dotyczy

FilePut(Int32, DateTime, Int64)

Zapisuje dane ze zmiennej do pliku dysku. Ta My funkcja zapewnia lepszą wydajność i wydajność operacji we/wy plików niż FilePut. Aby uzyskać więcej informacji, zobacz FileSystem.

public static void FilePut(int FileNumber, DateTime Value, long RecordNumber = -1);
static member FilePut : int * DateTime * int64 -> unit
Public Sub FilePut (FileNumber As Integer, Value As DateTime, Optional RecordNumber As Long = -1)

Parametry

FileNumber
Int32

To jest wymagane. Dowolny prawidłowy numer pliku.

Value
DateTime

To jest wymagane. Prawidłowa nazwa zmiennej, która zawiera dane zapisane na dysku.

RecordNumber
Int64

Optional. Liczba rekordów (Random pliki trybu) lub liczba bajtów (Binary pliki trybu), w których rozpoczyna się zapisywanie.

Wyjątki

RecordNumber < 1 i nie równe -1.

Tryb pliku jest nieprawidłowy.

Przykłady

W tym przykładzie użyto funkcji do zapisywania FilePut danych w pliku. Pięć rekordów struktury Person jest zapisywanych w pliku.

Structure Person
    Public ID As Integer
    Public Name As String
End Structure

Sub WriteData()
    Dim PatientRecord As Person
    Dim recordNumber As Integer
    '    Open file for random access.
    FileOpen(1, "C:\TESTFILE.txt", OpenMode.Binary)
    ' Loop 5 times.
    For recordNumber = 1 To 5
        ' Define ID.
        PatientRecord.ID = recordNumber
        ' Create a string.
        PatientRecord.Name = "Name " & recordNumber
        ' Write record to file.
        FilePut(1, PatientRecord)
    Next recordNumber
    FileClose(1)
End Sub

Uwagi

FilePutjest prawidłowy tylko w Random trybie i .Binary

Dane zapisywane FilePut za pomocą polecenia są zwykle odczytywane z pliku przy użyciu polecenia FileGet.

Pierwszy rekord lub bajt w pliku znajduje się na pozycji 1, drugi rekord lub bajt znajduje się na pozycji 2 itd. Jeśli pominięto RecordNumber, zostanie zapisany następny rekord lub bajt po ostatniej FileGet funkcji lub FilePut wskazywany przez ostatnią Seek funkcję.

StringIsFixedLength Argument określa, czy funkcja interpretuje ciągi jako zmienne, czy stałą długość. FilePut nie zapisuje deskryptora długości, gdy argument ma wartość True. Jeśli używasz polecenia StringIsFixedLength = True z elementem FilePut, musisz wykonać to samo z elementem FileGeti musisz 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 klauzuli FileOpen funkcji, FilePut zapisuje kolejne rekordy w granicach długości rekordu. Odstęp między końcem jednego rekordu a rozpoczęciem następnego rekordu jest dopełniany istniejącą zawartością buforu pliku. Ponieważ nie można określić ilości danych uzupełniania z pewnością, 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 w RecordLength klauzuli FileOpen funkcji, zostanie zgłoszony wyjątek.

  • Jeśli zapisywana zmienna jest ciągiem, FilePut zapisuje deskryptor dwu bajtowy zawierający długość ciągu, a następnie zapisuje dane, które przechodzą do zmiennej. W związku z tym długość rekordu określona przez klauzulę RecordLength w FileOpen funkcji musi wynosić co najmniej dwa bajty większe niż rzeczywista długość ciągu.

  • Jeśli zapisywana zmienna jest obiektem zawierającym typ liczbowy, FilePut zapisuje dwa bajty identyfikujące VarType obiekt, a następnie zapisuje zmienną. Na przykład podczas pisania obiektu zawierającego liczbę całkowitą FilePut zapisuje sześć bajtów: dwa bajty identyfikujące obiekt jako VarType(3) (Integer) i cztery bajty zawierające dane. Długość rekordu RecordLength określona przez parametr w FileOpen funkcji musi wynosić co najmniej dwa bajty większe niż rzeczywista liczba bajtów wymaganych do przechowywania zmiennej.

  • Jeśli zapisywana zmienna jest obiektem zawierającym ciąg, FilePut zapisuje deskryptor dwu bajtowy identyfikujący VarType(8) obiekt, deskryptor dwu bajtowy wskazujący długość ciągu, a następnie zapisuje dane ciągu. Długość rekordu RecordLength określona przez parametr w FileOpen 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 parametru StringIsFixedLength , a odczytany ciąg powinien być prawidłową długością.

  • Jeśli zapisywana zmienna jest tablicą, możesz wybrać, czy napisać deskryptor dla rozmiaru i wymiarów tablicy. Visual Basic 6.0 i starszych wersjach zapisują deskryptor plików dla tablicy dynamicznej, ale nie dla tablicy o stałym rozmiarze. Visual Basic 2005 domyślnie nie zapisuje deskryptora. Aby napisać deskryptor, ustaw ArrayIsDynamic parametr na Truewartość . Podczas zapisywania tablicy należy dopasować sposób odczytywania tablicy; jeśli zostanie odczytany za pomocą deskryptora, musisz napisać deskryptor. 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 * NumberOfDimensions). Długość rekordu RecordLength określona przez klauzulę w FileOpen funkcji musi być większa lub równa sumie wszystkich bajtów wymaganych do zapisania danych tablicy i deskryptora tablicy. Na przykład następująca deklaracja tablicy wymaga 218 bajtów, gdy tablica jest zapisywana na dysku.

    Dim MyArray(4, 9) As Integer
    
  • Jeśli zapisywana zmienna jest dowolnym innym typem zmiennej (a nie ciągiem o zmiennej długości lub obiektem), FilePut zapisuje tylko dane zmiennych. Długość rekordu określona przez klauzulę RecordLengthFileOpen w funkcji musi być większa lub równa długości zapisywanych danych.

  • FilePut zapisuje elementy struktur tak, jakby zostały napisane indywidualnie, z wyjątkiem braku wypełnienia między elementami. Atrybut VBFixedString można zastosować do pól ciągów w strukturach, aby wskazać rozmiar ciągu podczas zapisywania na dysku.

    Note

    Pola ciągów, które mają więcej bajtów niż określony przez VBFixedString atrybut, są obcinane podczas zapisywania na dysku,

Tryb binarny

W przypadku plików otwartych w Binary trybie większość Random reguł trybu ma zastosowanie z pewnymi wyjątkami. Następujące reguły dotyczące plików otwartych w Binary trybie różnią się od reguł trybu Random :

  • Klauzula RecordLengthFileOpen w funkcji nie ma wpływu. FilePut zapisuje wszystkie zmienne na dysku stale, czyli bez uzupełniania między rekordami.

  • W przypadku dowolnej tablicy innej niż tablica w strukturze FilePut zapisuje tylko dane. Deskryptor nie jest zapisywany.

  • FilePut zapisuje ciągi o zmiennej długości, które nie są elementami struktur bez deskryptora długości dwu bajtów. Liczba zapisanych bajtów jest równa liczbie znaków w ciągu. Na przykład następujące instrukcje zapisują 11 bajtów do pliku o numerze 1:

    Dim hellow As String = "Hello World"
    FilePut(1, hellow)
    
  • Zapisywanie w pliku przy użyciu FilePut funkcji wymaga Write dostępu z wyliczenia FileIOPermissionAccess .

Zobacz też

Dotyczy

FilePut(Int32, Char, Int64)

Zapisuje dane ze zmiennej do pliku dysku. Ta My funkcja zapewnia lepszą wydajność i wydajność operacji we/wy plików niż FilePut. Aby uzyskać więcej informacji, zobacz FileSystem.

public static void FilePut(int FileNumber, char Value, long RecordNumber = -1);
static member FilePut : int * char * int64 -> unit
Public Sub FilePut (FileNumber As Integer, Value As Char, Optional RecordNumber As Long = -1)

Parametry

FileNumber
Int32

To jest wymagane. Dowolny prawidłowy numer pliku.

Value
Char

To jest wymagane. Prawidłowa nazwa zmiennej, która zawiera dane zapisane na dysku.

RecordNumber
Int64

Optional. Liczba rekordów (Random pliki trybu) lub liczba bajtów (Binary pliki trybu), w których rozpoczyna się zapisywanie.

Wyjątki

RecordNumber < 1 i nie równe -1.

Tryb pliku jest nieprawidłowy.

Przykłady

W tym przykładzie użyto funkcji do zapisywania FilePut danych w pliku. Pięć rekordów struktury Person jest zapisywanych w pliku.

Structure Person
    Public ID As Integer
    Public Name As String
End Structure

Sub WriteData()
    Dim PatientRecord As Person
    Dim recordNumber As Integer
    '    Open file for random access.
    FileOpen(1, "C:\TESTFILE.txt", OpenMode.Binary)
    ' Loop 5 times.
    For recordNumber = 1 To 5
        ' Define ID.
        PatientRecord.ID = recordNumber
        ' Create a string.
        PatientRecord.Name = "Name " & recordNumber
        ' Write record to file.
        FilePut(1, PatientRecord)
    Next recordNumber
    FileClose(1)
End Sub

Uwagi

FilePutjest prawidłowy tylko w Random trybie i .Binary

Dane zapisywane FilePut za pomocą polecenia są zwykle odczytywane z pliku przy użyciu polecenia FileGet.

Pierwszy rekord lub bajt w pliku znajduje się na pozycji 1, drugi rekord lub bajt znajduje się na pozycji 2 itd. Jeśli pominięto RecordNumber, zostanie zapisany następny rekord lub bajt po ostatniej FileGet funkcji lub FilePut wskazywany przez ostatnią Seek funkcję.

StringIsFixedLength Argument określa, czy funkcja interpretuje ciągi jako zmienne, czy stałą długość. FilePut nie zapisuje deskryptora długości, gdy argument ma wartość True. Jeśli używasz polecenia StringIsFixedLength = True z elementem FilePut, musisz wykonać to samo z elementem FileGeti musisz 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 klauzuli FileOpen funkcji, FilePut zapisuje kolejne rekordy w granicach długości rekordu. Odstęp między końcem jednego rekordu a rozpoczęciem następnego rekordu jest dopełniany istniejącą zawartością buforu pliku. Ponieważ nie można określić ilości danych uzupełniania z pewnością, 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 w RecordLength klauzuli FileOpen funkcji, zostanie zgłoszony wyjątek.

  • Jeśli zapisywana zmienna jest ciągiem, FilePut zapisuje deskryptor dwu bajtowy zawierający długość ciągu, a następnie zapisuje dane, które przechodzą do zmiennej. W związku z tym długość rekordu określona przez klauzulę RecordLength w FileOpen funkcji musi wynosić co najmniej dwa bajty większe niż rzeczywista długość ciągu.

  • Jeśli zapisywana zmienna jest obiektem zawierającym typ liczbowy, FilePut zapisuje dwa bajty identyfikujące VarType obiekt, a następnie zapisuje zmienną. Na przykład podczas pisania obiektu zawierającego liczbę całkowitą FilePut zapisuje sześć bajtów: dwa bajty identyfikujące obiekt jako VarType(3) (Integer) i cztery bajty zawierające dane. Długość rekordu RecordLength określona przez parametr w FileOpen funkcji musi wynosić co najmniej dwa bajty większe niż rzeczywista liczba bajtów wymaganych do przechowywania zmiennej.

  • Jeśli zapisywana zmienna jest obiektem zawierającym ciąg, FilePut zapisuje deskryptor dwu bajtowy identyfikujący VarType(8) obiekt, deskryptor dwu bajtowy wskazujący długość ciągu, a następnie zapisuje dane ciągu. Długość rekordu RecordLength określona przez parametr w FileOpen 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 parametru StringIsFixedLength , a odczytany ciąg powinien być prawidłową długością.

  • Jeśli zapisywana zmienna jest tablicą, możesz wybrać, czy napisać deskryptor dla rozmiaru i wymiarów tablicy. Visual Basic 6.0 i starszych wersjach zapisują deskryptor plików dla tablicy dynamicznej, ale nie dla tablicy o stałym rozmiarze. Visual Basic 2005 domyślnie nie zapisuje deskryptora. Aby napisać deskryptor, ustaw ArrayIsDynamic parametr na Truewartość . Podczas zapisywania tablicy należy dopasować sposób odczytywania tablicy; jeśli zostanie odczytany za pomocą deskryptora, musisz napisać deskryptor. 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 * NumberOfDimensions). Długość rekordu RecordLength określona przez klauzulę w FileOpen funkcji musi być większa lub równa sumie wszystkich bajtów wymaganych do zapisania danych tablicy i deskryptora tablicy. Na przykład następująca deklaracja tablicy wymaga 218 bajtów, gdy tablica jest zapisywana na dysku.

    Dim MyArray(4, 9) As Integer
    
  • Jeśli zapisywana zmienna jest dowolnym innym typem zmiennej (a nie ciągiem o zmiennej długości lub obiektem), FilePut zapisuje tylko dane zmiennych. Długość rekordu określona przez klauzulę RecordLengthFileOpen w funkcji musi być większa lub równa długości zapisywanych danych.

  • FilePut zapisuje elementy struktur tak, jakby zostały napisane indywidualnie, z wyjątkiem braku wypełnienia między elementami. Atrybut VBFixedString można zastosować do pól ciągów w strukturach, aby wskazać rozmiar ciągu podczas zapisywania na dysku.

    Note

    Pola ciągów, które mają więcej bajtów niż określony przez VBFixedString atrybut, są obcinane podczas zapisywania na dysku,

Tryb binarny

W przypadku plików otwartych w Binary trybie większość Random reguł trybu ma zastosowanie z pewnymi wyjątkami. Następujące reguły dotyczące plików otwartych w Binary trybie różnią się od reguł trybu Random :

  • Klauzula RecordLengthFileOpen w funkcji nie ma wpływu. FilePut zapisuje wszystkie zmienne na dysku stale, czyli bez uzupełniania między rekordami.

  • W przypadku dowolnej tablicy innej niż tablica w strukturze FilePut zapisuje tylko dane. Deskryptor nie jest zapisywany.

  • FilePut zapisuje ciągi o zmiennej długości, które nie są elementami struktur bez deskryptora długości dwu bajtów. Liczba zapisanych bajtów jest równa liczbie znaków w ciągu. Na przykład następujące instrukcje zapisują 11 bajtów do pliku o numerze 1:

    Dim hellow As String = "Hello World"
    FilePut(1, hellow)
    
  • Zapisywanie w pliku przy użyciu FilePut funkcji wymaga Write dostępu z wyliczenia FileIOPermissionAccess .

Zobacz też

Dotyczy

FilePut(Int32, Byte, Int64)

Zapisuje dane ze zmiennej do pliku dysku. Ta My funkcja zapewnia lepszą wydajność i wydajność operacji we/wy plików niż FilePut. Aby uzyskać więcej informacji, zobacz FileSystem.

public static void FilePut(int FileNumber, byte Value, long RecordNumber = -1);
static member FilePut : int * byte * int64 -> unit
Public Sub FilePut (FileNumber As Integer, Value As Byte, Optional RecordNumber As Long = -1)

Parametry

FileNumber
Int32

To jest wymagane. Dowolny prawidłowy numer pliku.

Value
Byte

To jest wymagane. Prawidłowa nazwa zmiennej, która zawiera dane zapisane na dysku.

RecordNumber
Int64

Optional. Liczba rekordów (Random pliki trybu) lub liczba bajtów (Binary pliki trybu), w których rozpoczyna się zapisywanie.

Wyjątki

RecordNumber < 1 i nie równe -1.

Tryb pliku jest nieprawidłowy.

Przykłady

W tym przykładzie użyto funkcji do zapisywania FilePut danych w pliku. Pięć rekordów struktury Person jest zapisywanych w pliku.

Structure Person
    Public ID As Integer
    Public Name As String
End Structure

Sub WriteData()
    Dim PatientRecord As Person
    Dim recordNumber As Integer
    '    Open file for random access.
    FileOpen(1, "C:\TESTFILE.txt", OpenMode.Binary)
    ' Loop 5 times.
    For recordNumber = 1 To 5
        ' Define ID.
        PatientRecord.ID = recordNumber
        ' Create a string.
        PatientRecord.Name = "Name " & recordNumber
        ' Write record to file.
        FilePut(1, PatientRecord)
    Next recordNumber
    FileClose(1)
End Sub

Uwagi

FilePutjest prawidłowy tylko w Random trybie i .Binary

Dane zapisywane FilePut za pomocą polecenia są zwykle odczytywane z pliku przy użyciu polecenia FileGet.

Pierwszy rekord lub bajt w pliku znajduje się na pozycji 1, drugi rekord lub bajt znajduje się na pozycji 2 itd. Jeśli pominięto RecordNumber, zostanie zapisany następny rekord lub bajt po ostatniej FileGet funkcji lub FilePut wskazywany przez ostatnią Seek funkcję.

StringIsFixedLength Argument określa, czy funkcja interpretuje ciągi jako zmienne, czy stałą długość. FilePut nie zapisuje deskryptora długości, gdy argument ma wartość True. Jeśli używasz polecenia StringIsFixedLength = True z elementem FilePut, musisz wykonać to samo z elementem FileGeti musisz 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 klauzuli FileOpen funkcji, FilePut zapisuje kolejne rekordy w granicach długości rekordu. Odstęp między końcem jednego rekordu a rozpoczęciem następnego rekordu jest dopełniany istniejącą zawartością buforu pliku. Ponieważ nie można określić ilości danych uzupełniania z pewnością, 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 w RecordLength klauzuli FileOpen funkcji, zostanie zgłoszony wyjątek.

  • Jeśli zapisywana zmienna jest ciągiem, FilePut zapisuje deskryptor dwu bajtowy zawierający długość ciągu, a następnie zapisuje dane, które przechodzą do zmiennej. W związku z tym długość rekordu określona przez klauzulę RecordLength w FileOpen funkcji musi wynosić co najmniej dwa bajty większe niż rzeczywista długość ciągu.

  • Jeśli zapisywana zmienna jest obiektem zawierającym typ liczbowy, FilePut zapisuje dwa bajty identyfikujące VarType obiekt, a następnie zapisuje zmienną. Na przykład podczas pisania obiektu zawierającego liczbę całkowitą FilePut zapisuje sześć bajtów: dwa bajty identyfikujące obiekt jako VarType(3) (Integer) i cztery bajty zawierające dane. Długość rekordu RecordLength określona przez parametr w FileOpen funkcji musi wynosić co najmniej dwa bajty większe niż rzeczywista liczba bajtów wymaganych do przechowywania zmiennej.

  • Jeśli zapisywana zmienna jest obiektem zawierającym ciąg, FilePut zapisuje deskryptor dwu bajtowy identyfikujący VarType(8) obiekt, deskryptor dwu bajtowy wskazujący długość ciągu, a następnie zapisuje dane ciągu. Długość rekordu RecordLength określona przez parametr w FileOpen 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 parametru StringIsFixedLength , a odczytany ciąg powinien być prawidłową długością.

  • Jeśli zapisywana zmienna jest tablicą, możesz wybrać, czy napisać deskryptor dla rozmiaru i wymiarów tablicy. Visual Basic 6.0 i starszych wersjach zapisują deskryptor plików dla tablicy dynamicznej, ale nie dla tablicy o stałym rozmiarze. Visual Basic 2005 domyślnie nie zapisuje deskryptora. Aby napisać deskryptor, ustaw ArrayIsDynamic parametr na Truewartość . Podczas zapisywania tablicy należy dopasować sposób odczytywania tablicy; jeśli zostanie odczytany za pomocą deskryptora, musisz napisać deskryptor. 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 * NumberOfDimensions). Długość rekordu RecordLength określona przez klauzulę w FileOpen funkcji musi być większa lub równa sumie wszystkich bajtów wymaganych do zapisania danych tablicy i deskryptora tablicy. Na przykład następująca deklaracja tablicy wymaga 218 bajtów, gdy tablica jest zapisywana na dysku.

    Dim MyArray(4, 9) As Integer
    
  • Jeśli zapisywana zmienna jest dowolnym innym typem zmiennej (a nie ciągiem o zmiennej długości lub obiektem), FilePut zapisuje tylko dane zmiennych. Długość rekordu określona przez klauzulę RecordLengthFileOpen w funkcji musi być większa lub równa długości zapisywanych danych.

  • FilePut zapisuje elementy struktur tak, jakby zostały napisane indywidualnie, z wyjątkiem braku wypełnienia między elementami. Atrybut VBFixedString można zastosować do pól ciągów w strukturach, aby wskazać rozmiar ciągu podczas zapisywania na dysku.

    Note

    Pola ciągów, które mają więcej bajtów niż określony przez VBFixedString atrybut, są obcinane podczas zapisywania na dysku,

Tryb binarny

W przypadku plików otwartych w Binary trybie większość Random reguł trybu ma zastosowanie z pewnymi wyjątkami. Następujące reguły dotyczące plików otwartych w Binary trybie różnią się od reguł trybu Random :

  • Klauzula RecordLengthFileOpen w funkcji nie ma wpływu. FilePut zapisuje wszystkie zmienne na dysku stale, czyli bez uzupełniania między rekordami.

  • W przypadku dowolnej tablicy innej niż tablica w strukturze FilePut zapisuje tylko dane. Deskryptor nie jest zapisywany.

  • FilePut zapisuje ciągi o zmiennej długości, które nie są elementami struktur bez deskryptora długości dwu bajtów. Liczba zapisanych bajtów jest równa liczbie znaków w ciągu. Na przykład następujące instrukcje zapisują 11 bajtów do pliku o numerze 1:

    Dim hellow As String = "Hello World"
    FilePut(1, hellow)
    
  • Zapisywanie w pliku przy użyciu FilePut funkcji wymaga Write dostępu z wyliczenia FileIOPermissionAccess .

Zobacz też

Dotyczy

FilePut(Int32, Boolean, Int64)

Zapisuje dane ze zmiennej do pliku dysku. Ta My funkcja zapewnia lepszą wydajność i wydajność operacji we/wy plików niż FilePut. Aby uzyskać więcej informacji, zobacz FileSystem.

public static void FilePut(int FileNumber, bool Value, long RecordNumber = -1);
static member FilePut : int * bool * int64 -> unit
Public Sub FilePut (FileNumber As Integer, Value As Boolean, Optional RecordNumber As Long = -1)

Parametry

FileNumber
Int32

To jest wymagane. Dowolny prawidłowy numer pliku.

Value
Boolean

To jest wymagane. Prawidłowa nazwa zmiennej, która zawiera dane zapisane na dysku.

RecordNumber
Int64

Optional. Liczba rekordów (Random pliki trybu) lub liczba bajtów (Binary pliki trybu), w których rozpoczyna się zapisywanie.

Wyjątki

RecordNumber < 1 i nie równe -1.

Tryb pliku jest nieprawidłowy.

Przykłady

W tym przykładzie użyto funkcji do zapisywania FilePut danych w pliku. Pięć rekordów struktury Person jest zapisywanych w pliku.

Structure Person
    Public ID As Integer
    Public Name As String
End Structure

Sub WriteData()
    Dim PatientRecord As Person
    Dim recordNumber As Integer
    '    Open file for random access.
    FileOpen(1, "C:\TESTFILE.txt", OpenMode.Binary)
    ' Loop 5 times.
    For recordNumber = 1 To 5
        ' Define ID.
        PatientRecord.ID = recordNumber
        ' Create a string.
        PatientRecord.Name = "Name " & recordNumber
        ' Write record to file.
        FilePut(1, PatientRecord)
    Next recordNumber
    FileClose(1)
End Sub

Uwagi

FilePutjest prawidłowy tylko w Random trybie i .Binary

Dane zapisywane FilePut za pomocą polecenia są zwykle odczytywane z pliku przy użyciu polecenia FileGet.

Pierwszy rekord lub bajt w pliku znajduje się na pozycji 1, drugi rekord lub bajt znajduje się na pozycji 2 itd. Jeśli pominięto RecordNumber, zostanie zapisany następny rekord lub bajt po ostatniej FileGet funkcji lub FilePut wskazywany przez ostatnią Seek funkcję.

StringIsFixedLength Argument określa, czy funkcja interpretuje ciągi jako zmienne, czy stałą długość. FilePut nie zapisuje deskryptora długości, gdy argument ma wartość True. Jeśli używasz polecenia StringIsFixedLength = True z elementem FilePut, musisz wykonać to samo z elementem FileGeti musisz 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 klauzuli FileOpen funkcji, FilePut zapisuje kolejne rekordy w granicach długości rekordu. Odstęp między końcem jednego rekordu a rozpoczęciem następnego rekordu jest dopełniany istniejącą zawartością buforu pliku. Ponieważ nie można określić ilości danych uzupełniania z pewnością, 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 w RecordLength klauzuli FileOpen funkcji, zostanie zgłoszony wyjątek.

  • Jeśli zapisywana zmienna jest ciągiem, FilePut zapisuje deskryptor dwu bajtowy zawierający długość ciągu, a następnie zapisuje dane, które przechodzą do zmiennej. W związku z tym długość rekordu określona przez klauzulę RecordLength w FileOpen funkcji musi wynosić co najmniej dwa bajty większe niż rzeczywista długość ciągu.

  • Jeśli zapisywana zmienna jest obiektem zawierającym typ liczbowy, FilePut zapisuje dwa bajty identyfikujące VarType obiekt, a następnie zapisuje zmienną. Na przykład podczas pisania obiektu zawierającego liczbę całkowitą FilePut zapisuje sześć bajtów: dwa bajty identyfikujące obiekt jako VarType(3) (Integer) i cztery bajty zawierające dane. Długość rekordu RecordLength określona przez parametr w FileOpen funkcji musi wynosić co najmniej dwa bajty większe niż rzeczywista liczba bajtów wymaganych do przechowywania zmiennej.

  • Jeśli zapisywana zmienna jest obiektem zawierającym ciąg, FilePut zapisuje deskryptor dwu bajtowy identyfikujący VarType(8) obiekt, deskryptor dwu bajtowy wskazujący długość ciągu, a następnie zapisuje dane ciągu. Długość rekordu RecordLength określona przez parametr w FileOpen 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 parametru StringIsFixedLength , a odczytany ciąg powinien być prawidłową długością.

  • Jeśli zapisywana zmienna jest tablicą, możesz wybrać, czy napisać deskryptor dla rozmiaru i wymiarów tablicy. Visual Basic 6.0 i starszych wersjach zapisują deskryptor plików dla tablicy dynamicznej, ale nie dla tablicy o stałym rozmiarze. Visual Basic 2005 domyślnie nie zapisuje deskryptora. Aby napisać deskryptor, ustaw ArrayIsDynamic parametr na Truewartość . Podczas zapisywania tablicy należy dopasować sposób odczytywania tablicy; jeśli zostanie odczytany za pomocą deskryptora, musisz napisać deskryptor. 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 * NumberOfDimensions). Długość rekordu RecordLength określona przez klauzulę w FileOpen funkcji musi być większa lub równa sumie wszystkich bajtów wymaganych do zapisania danych tablicy i deskryptora tablicy. Na przykład następująca deklaracja tablicy wymaga 218 bajtów, gdy tablica jest zapisywana na dysku.

    Dim MyArray(4, 9) As Integer
    
  • Jeśli zapisywana zmienna jest dowolnym innym typem zmiennej (a nie ciągiem o zmiennej długości lub obiektem), FilePut zapisuje tylko dane zmiennych. Długość rekordu określona przez klauzulę RecordLengthFileOpen w funkcji musi być większa lub równa długości zapisywanych danych.

  • FilePut zapisuje elementy struktur tak, jakby zostały napisane indywidualnie, z wyjątkiem braku wypełnienia między elementami. Atrybut VBFixedString można zastosować do pól ciągów w strukturach, aby wskazać rozmiar ciągu podczas zapisywania na dysku.

    Note

    Pola ciągów, które mają więcej bajtów niż określony przez VBFixedString atrybut, są obcinane podczas zapisywania na dysku,

Tryb binarny

W przypadku plików otwartych w Binary trybie większość Random reguł trybu ma zastosowanie z pewnymi wyjątkami. Następujące reguły dotyczące plików otwartych w Binary trybie różnią się od reguł trybu Random :

  • Klauzula RecordLengthFileOpen w funkcji nie ma wpływu. FilePut zapisuje wszystkie zmienne na dysku stale, czyli bez uzupełniania między rekordami.

  • W przypadku dowolnej tablicy innej niż tablica w strukturze FilePut zapisuje tylko dane. Deskryptor nie jest zapisywany.

  • FilePut zapisuje ciągi o zmiennej długości, które nie są elementami struktur bez deskryptora długości dwu bajtów. Liczba zapisanych bajtów jest równa liczbie znaków w ciągu. Na przykład następujące instrukcje zapisują 11 bajtów do pliku o numerze 1:

    Dim hellow As String = "Hello World"
    FilePut(1, hellow)
    
  • Zapisywanie w pliku przy użyciu FilePut funkcji wymaga Write dostępu z wyliczenia FileIOPermissionAccess .

Zobacz też

Dotyczy

FilePut(Int32, Int16, Int64)

Zapisuje dane ze zmiennej do pliku dysku. Ta My funkcja zapewnia lepszą wydajność i wydajność operacji we/wy plików niż FilePut. Aby uzyskać więcej informacji, zobacz FileSystem.

public static void FilePut(int FileNumber, short Value, long RecordNumber = -1);
static member FilePut : int * int16 * int64 -> unit
Public Sub FilePut (FileNumber As Integer, Value As Short, Optional RecordNumber As Long = -1)

Parametry

FileNumber
Int32

To jest wymagane. Dowolny prawidłowy numer pliku.

Value
Int16

To jest wymagane. Prawidłowa nazwa zmiennej, która zawiera dane zapisane na dysku.

RecordNumber
Int64

Optional. Liczba rekordów (Random pliki trybu) lub liczba bajtów (Binary pliki trybu), w których rozpoczyna się zapisywanie.

Wyjątki

RecordNumber < 1 i nie równe -1.

Tryb pliku jest nieprawidłowy.

Przykłady

W tym przykładzie użyto funkcji do zapisywania FilePut danych w pliku. Pięć rekordów struktury Person jest zapisywanych w pliku.

Structure Person
    Public ID As Integer
    Public Name As String
End Structure

Sub WriteData()
    Dim PatientRecord As Person
    Dim recordNumber As Integer
    '    Open file for random access.
    FileOpen(1, "C:\TESTFILE.txt", OpenMode.Binary)
    ' Loop 5 times.
    For recordNumber = 1 To 5
        ' Define ID.
        PatientRecord.ID = recordNumber
        ' Create a string.
        PatientRecord.Name = "Name " & recordNumber
        ' Write record to file.
        FilePut(1, PatientRecord)
    Next recordNumber
    FileClose(1)
End Sub

Uwagi

FilePutjest prawidłowy tylko w Random trybie i .Binary

Dane zapisywane FilePut za pomocą polecenia są zwykle odczytywane z pliku przy użyciu polecenia FileGet.

Pierwszy rekord lub bajt w pliku znajduje się na pozycji 1, drugi rekord lub bajt znajduje się na pozycji 2 itd. Jeśli pominięto RecordNumber, zostanie zapisany następny rekord lub bajt po ostatniej FileGet funkcji lub FilePut wskazywany przez ostatnią Seek funkcję.

StringIsFixedLength Argument określa, czy funkcja interpretuje ciągi jako zmienne, czy stałą długość. FilePut nie zapisuje deskryptora długości, gdy argument ma wartość True. Jeśli używasz polecenia StringIsFixedLength = True z elementem FilePut, musisz wykonać to samo z elementem FileGeti musisz 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 klauzuli FileOpen funkcji, FilePut zapisuje kolejne rekordy w granicach długości rekordu. Odstęp między końcem jednego rekordu a rozpoczęciem następnego rekordu jest dopełniany istniejącą zawartością buforu pliku. Ponieważ nie można określić ilości danych uzupełniania z pewnością, 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 w RecordLength klauzuli FileOpen funkcji, zostanie zgłoszony wyjątek.

  • Jeśli zapisywana zmienna jest ciągiem, FilePut zapisuje deskryptor dwu bajtowy zawierający długość ciągu, a następnie zapisuje dane, które przechodzą do zmiennej. W związku z tym długość rekordu określona przez klauzulę RecordLength w FileOpen funkcji musi wynosić co najmniej dwa bajty większe niż rzeczywista długość ciągu.

  • Jeśli zapisywana zmienna jest obiektem zawierającym typ liczbowy, FilePut zapisuje dwa bajty identyfikujące VarType obiekt, a następnie zapisuje zmienną. Na przykład podczas pisania obiektu zawierającego liczbę całkowitą FilePut zapisuje sześć bajtów: dwa bajty identyfikujące obiekt jako VarType(3) (Integer) i cztery bajty zawierające dane. Długość rekordu RecordLength określona przez parametr w FileOpen funkcji musi wynosić co najmniej dwa bajty większe niż rzeczywista liczba bajtów wymaganych do przechowywania zmiennej.

  • Jeśli zapisywana zmienna jest obiektem zawierającym ciąg, FilePut 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ść rekordu RecordLength określona przez parametr w FileOpen 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 parametru StringIsFixedLength , a odczytany ciąg powinien być prawidłową długością.

  • Jeśli zapisywana zmienna jest tablicą, możesz wybrać, czy napisać deskryptor dla rozmiaru i wymiarów tablicy. Visual Basic 6.0 i starszych wersjach zapisują deskryptor plików dla tablicy dynamicznej, ale nie dla tablicy o stałym rozmiarze. Visual Basic 2005 domyślnie nie zapisuje deskryptora. Aby napisać deskryptor, ustaw ArrayIsDynamic parametr na Truewartość . Podczas zapisywania tablicy należy dopasować sposób odczytywania tablicy; jeśli zostanie odczytany za pomocą deskryptora, musisz napisać deskryptor. 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 * NumberOfDimensions). Długość rekordu RecordLength określona przez klauzulę w FileOpen funkcji musi być większa lub równa sumie wszystkich bajtów wymaganych do zapisania danych tablicy i deskryptora tablicy. Na przykład następująca deklaracja tablicy wymaga 218 bajtów, gdy tablica jest zapisywana na dysku.

    Dim MyArray(4, 9) As Integer
    
  • Jeśli zapisywana zmienna jest dowolnym innym typem zmiennej (a nie ciągiem o zmiennej długości lub obiektem), FilePut zapisuje tylko dane zmiennych. Długość rekordu określona przez klauzulę RecordLengthFileOpen w funkcji musi być większa lub równa długości zapisywanych danych.

  • FilePut zapisuje elementy struktur tak, jakby zostały napisane indywidualnie, z wyjątkiem braku wypełnienia między elementami. Atrybut VBFixedString można zastosować do pól ciągów w strukturach, aby wskazać rozmiar ciągu podczas zapisywania na dysku.

    Note

    Pola ciągów, które mają więcej bajtów niż określony przez VBFixedString atrybut, są obcinane podczas zapisywania na dysku,

Tryb binarny

W przypadku plików otwartych w Binary trybie większość Random reguł trybu ma zastosowanie z pewnymi wyjątkami. Następujące reguły dotyczące plików otwartych w Binary trybie różnią się od reguł trybu Random :

  • Klauzula RecordLengthFileOpen w funkcji nie ma wpływu. FilePut zapisuje wszystkie zmienne na dysku stale, czyli bez uzupełniania między rekordami.

  • W przypadku dowolnej tablicy innej niż tablica w strukturze FilePut zapisuje tylko dane. Deskryptor nie jest zapisywany.

  • FilePut zapisuje ciągi o zmiennej długości, które nie są elementami struktur bez deskryptora długości dwu bajtów. Liczba zapisanych bajtów jest równa liczbie znaków w ciągu. Na przykład następujące instrukcje zapisują 11 bajtów do pliku o numerze 1:

    Dim hellow As String = "Hello World"
    FilePut(1, hellow)
    
  • Zapisywanie w pliku przy użyciu FilePut funkcji wymaga Write dostępu z wyliczenia FileIOPermissionAccess .

Zobacz też

Dotyczy