Udostępnij za pośrednictwem


FileSystem.FilePut Metoda

Definicja

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

Przeciążenia

FilePut(Int32, Int64, Int64)

Zapisuje dane ze zmiennej do pliku na 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 na 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.
Przestarzałe.

Zapisuje dane ze zmiennej do pliku na 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 na 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 na 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 na 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 na 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 na 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 na 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 na 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 na 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 na 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 na 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 na 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)

Źródło:
FileSystem.vb
Źródło:
FileSystem.vb
Źródło:
FileSystem.vb

Zapisuje dane ze zmiennej do pliku na dysku. Ta My funkcja zapewnia lepszą produktywność 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

Wymagane. Dowolna prawidłowa liczba plików.

Value
Int64

Wymagane. Prawidłowa nazwa zmiennej, która zawiera dane zapisane na dysku.

RecordNumber
Int64

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

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

FilePut jest 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 na pozycji 2 i tak dalej. Jeśli pominięto RecordNumber, następny rekord lub bajt po ostatnim FileGet lub FilePut funkcji lub wskazywany przez ostatnią Seek funkcję jest zapisywany.

Argument StringIsFixedLength określa, czy funkcja interpretuje ciągi jako zmienną, czy stałą długość. FilePut nie zapisuje deskryptora długości, gdy argument ma wartość True. Jeśli używasz polecenia StringIsFixedLength = True z FilePutprogramem , musisz wykonać to samo z parametrem 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 na granicach długości rekordu. Odstęp między końcem jednego rekordu a początkiem następnego rekordu jest wypełniany istniejącą zawartością buforu plików. Ponieważ ilości danych uzupełniania nie można dokładnie określić, to zazwyczaj dobrze jest, gdy długość rekordu jest zgodna z długością zapisanych 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 RecordLength określona przez klauzulę w FileOpen funkcji musi być co najmniej dwie bajty większe niż rzeczywista długość ciągu.

  • Jeśli zapisywana zmienna jest obiektem zawierającym typ liczbowy, FilePut zapisuje dwie 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 określona RecordLength przez parametr w FileOpen funkcji musi być co najmniej dwie bajty większe niż rzeczywista liczba bajtów wymaganych do przechowywania zmiennej.

  • Jeśli zapisywana zmienna jest obiektem zawierającym ciąg, 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 mieć prawidłową długość.

  • Jeżeli zapisywaną zmienną jest tablica, można wybrać, czy odczytać deskryptor, by uzyskać informacje o wielkości i wymiarze tablicy. Visual Basic 6.0 i starsze wersje zapisują deskryptor plików dla tablic dynamicznych, bez uwzględniania tablicy o stałym rozmiarze. Według domyślnych ustawień programu Visual Basic 2005 deskryptor nie jest zapisywany. Aby napisać deskryptor, ustaw ArrayIsDynamic parametr na True. Podczas zapisywania tablicy należy dopasować sposób odczytywania tablicy; jeśli będzie odczytywana z deskryptorem, należy 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 * LiczbaOfDimensions). Długość rekordu RecordLength określona przez klauzulę w FileOpen funkcji musi być większa lub równa sumie wszystkich bajtów wymaganych do zapisu danych tablicy i deskryptora tablicy. Na przykład następująca deklaracja tablicy wymaga 218 bajtów, jeśli tablica zapisywana jest 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 zmiennej. Długość rekordu FileOpen określona przez klauzulę RecordLength 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 dopełniania 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.

    Uwaga

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

Tryb binarny

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

  • Klauzula RecordLengthFileOpen w funkcji nie ma wpływu. FilePut zapisuje wszystkie zmienne na dysku stale, czyli bez dopeł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 o długości dwóch bajtów. Liczba bajtów zapisanych jest równa liczbie znaków znajdujących się już w ciągu. Na przykład poniższe instrukcje zapisują 11 bajtów do pliku numer 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)

Źródło:
FileSystem.vb
Źródło:
FileSystem.vb
Źródło:
FileSystem.vb

Zapisuje dane ze zmiennej do pliku na 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

Wymagane. Dowolna prawidłowa liczba plików.

Value
String

Wymagane. Prawidłowa nazwa zmiennej, która zawiera dane zapisane na dysku.

RecordNumber
Int64

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

StringIsFixedLength
Boolean

Opcjonalny. Stosuje się tylko przy pisaniu ciągów. Określa, czy należy napisać deskryptor długości ciągu dwu bajtowego dla ciągu do pliku. 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 FilePut funkcji do zapisywania 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

FilePut jest 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 na pozycji 2 i tak dalej. Jeśli pominięto RecordNumber, następny rekord lub bajt po ostatnim FileGet lub FilePut funkcji lub wskazywany przez ostatnią Seek funkcję jest zapisywany.

Argument StringIsFixedLength określa, czy funkcja interpretuje ciągi jako zmienną, czy stałą długość. FilePut nie zapisuje deskryptora długości, gdy argument ma wartość True. Jeśli używasz polecenia StringIsFixedLength = True z FilePutprogramem , musisz wykonać to samo z parametrem 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 na granicach długości rekordu. Odstęp między końcem jednego rekordu a początkiem następnego rekordu jest wypełniany istniejącą zawartością buforu plików. Ponieważ ilości danych uzupełniania nie można dokładnie określić, to zazwyczaj dobrze jest, gdy długość rekordu jest zgodna z długością zapisanych 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 RecordLength określona przez klauzulę w FileOpen funkcji musi być co najmniej dwie bajty większe niż rzeczywista długość ciągu.

  • Jeśli zapisywana zmienna jest obiektem zawierającym typ liczbowy, FilePut zapisuje dwie 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 określona RecordLength przez parametr w FileOpen funkcji musi być co najmniej dwie bajty większe niż rzeczywista liczba bajtów wymaganych do przechowywania zmiennej.

  • Jeśli zapisywana zmienna jest obiektem zawierającym ciąg, 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 mieć prawidłową długość.

  • Jeżeli zapisywaną zmienną jest tablica, można wybrać, czy odczytać deskryptor, by uzyskać informacje o wielkości i wymiarze tablicy. Visual Basic 6.0 i starsze wersje zapisują deskryptor plików dla tablic dynamicznych, bez uwzględniania tablicy o stałym rozmiarze. Według domyślnych ustawień programu Visual Basic 2005 deskryptor nie jest zapisywany. Aby napisać deskryptor, ustaw ArrayIsDynamic parametr na True. Podczas zapisywania tablicy należy dopasować sposób odczytywania tablicy; jeśli będzie odczytywana z deskryptorem, należy 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 * LiczbaOfDimensions). Długość rekordu RecordLength określona przez klauzulę w FileOpen funkcji musi być większa lub równa sumie wszystkich bajtów wymaganych do zapisu danych tablicy i deskryptora tablicy. Na przykład następująca deklaracja tablicy wymaga 218 bajtów, jeśli tablica zapisywana jest 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 zmiennej. Długość rekordu FileOpen określona przez klauzulę RecordLength 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.

    Uwaga

    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 w sposób ciągły, 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 o długości dwóch bajtów. Liczba bajtów zapisanych jest równa liczbie znaków znajdujących się już w ciągu. Na przykład poniższe instrukcje zapisują 11 bajtów do pliku numer 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)

Źródło:
FileSystem.vb
Źródło:
FileSystem.vb
Źródło:
FileSystem.vb

Przestroga

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

Przestroga

FileSystem.FilePut has been deprecated. Use FilePutObject to write Object types, or coerce FileNumber and RecordNumber to Integer for writing non-Object types.

Przestroga

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

Zapisuje dane ze zmiennej do pliku na 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(System::Object ^ FileNumber, System::Object ^ Value, System::Object ^ RecordNumber);
[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);
[System.Obsolete("FileSystem.FilePut has been deprecated. 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);
[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("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
[<System.Obsolete("FileSystem.FilePut has been deprecated. 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("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
Public Sub FilePut (FileNumber As Object, Value As Object, RecordNumber As Object)
Public Sub FilePut (FileNumber As Object, Value As Object, Optional RecordNumber As Object = -1)

Parametry

FileNumber
Object

Wymagane. Dowolna prawidłowa liczba plików.

Value
Object

Wymagane. Prawidłowa nazwa zmiennej, która zawiera dane zapisane na dysku.

RecordNumber
Object

Opcjonalny. 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.

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 na pozycji 2 i tak dalej. Jeśli pominięto RecordNumber, zostanie zapisany następny rekord lub bajt po ostatniej FileGet funkcji lub FilePut wskazywany przez ostatnią Seek funkcję.

Argument StringIsFixedLength określa, czy funkcja interpretuje ciągi jako zmienną, czy stałą długość. FilePut nie zapisuje deskryptora długości, gdy argument ma wartość True. Jeśli używasz polecenia z elementem StringIsFixedLengthFilePut = True , musisz zrobić 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 początkiem następnego rekordu jest wypełniany istniejącą zawartością buforu plików. Ponieważ ilości danych uzupełniania nie można dokładnie określić, to zazwyczaj dobrze jest, gdy długość rekordu jest zgodna z długością zapisanych 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 być co najmniej dwie 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 dwu bajtowy deskryptor 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 mieć prawidłową długość.

  • Jeżeli zapisywaną zmienną jest tablica, można wybrać, czy odczytać deskryptor, by uzyskać informacje o wielkości i wymiarze tablicy. Visual Basic 6.0 i starsze wersje zapisują deskryptor plików dla tablic dynamicznych, bez uwzględniania tablicy o stałym rozmiarze. Według domyślnych ustawień programu Visual Basic 2005 deskryptor nie jest zapisywany. Aby napisać deskryptor, ustaw ArrayIsDynamic parametr na True. Podczas zapisywania tablicy należy dopasować sposób odczytywania tablicy; jeśli będzie odczytywana z deskryptorem, należy 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 * LiczbaDimensionów). Długość rekordu określona przez klauzulę RecordLength 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, jeśli tablica zapisywana jest na dysku.

    Dim MyArray(4, 9) As Integer
    
  • Jeśli zapisywana zmienna jest dowolnym innym typem zmiennej (nie ciągiem o zmiennej długości lub obiektem), FilePut zapisuje tylko dane zmiennej. Długość rekordu określona przez klauzulę RecordLength w FileOpen 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.

    Uwaga

    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 w sposób ciągły, 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 o długości dwóch bajtów. Liczba bajtów zapisanych jest równa liczbie znaków znajdujących się już w ciągu. Na przykład poniższe instrukcje zapisują 11 bajtów do pliku numer 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, ValueType, Int64)

Źródło:
FileSystem.vb
Źródło:
FileSystem.vb
Źródło:
FileSystem.vb

Zapisuje dane ze zmiennej do pliku na dysku. Ta My funkcja zapewnia lepszą produktywność 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

Wymagane. Dowolna prawidłowa liczba plików.

Value
ValueType

Wymagane. Prawidłowa nazwa zmiennej, która zawiera dane zapisane na dysku.

RecordNumber
Int64

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

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 na pozycji 2 i tak dalej. Jeśli pominięto RecordNumber, zostanie zapisany następny rekord lub bajt po ostatniej FileGet funkcji lub FilePut wskazywany przez ostatnią Seek funkcję.

Argument StringIsFixedLength określa, czy funkcja interpretuje ciągi jako zmienną, czy stałą długość. FilePut nie zapisuje deskryptora długości, gdy argument ma wartość True. Jeśli używasz polecenia z elementem StringIsFixedLengthFilePut = True , musisz zrobić 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 początkiem następnego rekordu jest wypełniany istniejącą zawartością buforu plików. Ponieważ ilości danych uzupełniania nie można dokładnie określić, to zazwyczaj dobrze jest, gdy długość rekordu jest zgodna z długością zapisanych 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 RecordLength określona przez klauzulę w FileOpen funkcji musi być co najmniej dwie bajty większe niż rzeczywista długość ciągu.

  • Jeśli zapisywana zmienna jest obiektem zawierającym typ liczbowy, FilePut zapisuje dwie 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 określona RecordLength przez parametr w FileOpen funkcji musi być co najmniej dwie bajty większe niż rzeczywista liczba bajtów wymaganych do przechowywania zmiennej.

  • Jeśli zapisywana zmienna jest obiektem zawierającym ciąg, 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 mieć prawidłową długość.

  • Jeżeli zapisywaną zmienną jest tablica, można wybrać, czy odczytać deskryptor, by uzyskać informacje o wielkości i wymiarze tablicy. Visual Basic 6.0 i starsze wersje zapisują deskryptor plików dla tablic dynamicznych, bez uwzględniania tablicy o stałym rozmiarze. Według domyślnych ustawień programu Visual Basic 2005 deskryptor nie jest zapisywany. Aby napisać deskryptor, ustaw ArrayIsDynamic parametr na True. Podczas zapisywania tablicy należy dopasować sposób odczytywania tablicy; jeśli będzie odczytywana z deskryptorem, należy 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 * LiczbaOfDimensions). Długość rekordu RecordLength określona przez klauzulę w FileOpen funkcji musi być większa lub równa sumie wszystkich bajtów wymaganych do zapisu danych tablicy i deskryptora tablicy. Na przykład następująca deklaracja tablicy wymaga 218 bajtów, jeśli tablica zapisywana jest 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 zmiennej. Długość rekordu FileOpen określona przez klauzulę RecordLength 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 dopełniania 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.

    Uwaga

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

Tryb binarny

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

  • Klauzula RecordLengthFileOpen w funkcji nie ma wpływu. FilePut zapisuje wszystkie zmienne na dysku stale, czyli bez dopeł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 o długości dwóch bajtów. Liczba bajtów zapisanych jest równa liczbie znaków znajdujących się już w ciągu. Na przykład poniższe instrukcje zapisują 11 bajtów do pliku numer 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)

Źródło:
FileSystem.vb
Źródło:
FileSystem.vb
Źródło:
FileSystem.vb

Zapisuje dane ze zmiennej do pliku na dysku. Ta My funkcja zapewnia lepszą produktywność 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

Wymagane. Dowolna prawidłowa liczba plików.

Value
Single

Wymagane. Prawidłowa nazwa zmiennej, która zawiera dane zapisane na dysku.

RecordNumber
Int64

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

Wyjątki

RecordNumber< 1 i nie równe -1.

Tryb pliku jest nieprawidłowy.

Przykłady

W tym przykładzie użyto FilePut funkcji do zapisywania 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

FilePut jest 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 na pozycji 2 i tak dalej. Jeśli pominięto RecordNumber, następny rekord lub bajt po ostatnim FileGet lub FilePut funkcji lub wskazywany przez ostatnią Seek funkcję jest zapisywany.

Argument StringIsFixedLength określa, czy funkcja interpretuje ciągi jako zmienną, czy stałą długość. FilePut nie zapisuje deskryptora długości, gdy argument ma wartość True. Jeśli używasz polecenia StringIsFixedLength = True z FilePutprogramem , musisz wykonać to samo z parametrem 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 na granicach długości rekordu. Odstęp między końcem jednego rekordu a początkiem następnego rekordu jest wypełniany istniejącą zawartością buforu plików. Ponieważ ilości danych uzupełniania nie można dokładnie określić, to zazwyczaj dobrze jest, gdy długość rekordu jest zgodna z długością zapisanych 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 RecordLength określona przez klauzulę w FileOpen funkcji musi być co najmniej dwie bajty większe niż rzeczywista długość ciągu.

  • Jeśli zapisywana zmienna jest obiektem zawierającym typ liczbowy, FilePut zapisuje dwie 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 określona RecordLength przez parametr w FileOpen funkcji musi być co najmniej dwie bajty większe niż rzeczywista liczba bajtów wymaganych do przechowywania zmiennej.

  • Jeśli zapisywana zmienna jest obiektem zawierającym ciąg, 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 mieć prawidłową długość.

  • Jeżeli zapisywaną zmienną jest tablica, można wybrać, czy odczytać deskryptor, by uzyskać informacje o wielkości i wymiarze tablicy. Visual Basic 6.0 i starsze wersje zapisują deskryptor plików dla tablic dynamicznych, bez uwzględniania tablicy o stałym rozmiarze. Według domyślnych ustawień programu Visual Basic 2005 deskryptor nie jest zapisywany. Aby napisać deskryptor, ustaw ArrayIsDynamic parametr na True. Podczas zapisywania tablicy należy dopasować sposób odczytywania tablicy; jeśli będzie odczytywana z deskryptorem, należy 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 * LiczbaOfDimensions). Długość rekordu RecordLength określona przez klauzulę w FileOpen funkcji musi być większa lub równa sumie wszystkich bajtów wymaganych do zapisu danych tablicy i deskryptora tablicy. Na przykład następująca deklaracja tablicy wymaga 218 bajtów, jeśli tablica zapisywana jest 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 zmiennej. Długość rekordu FileOpen określona przez klauzulę RecordLength 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 dopełniania 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.

    Uwaga

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

Tryb binarny

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

  • Klauzula RecordLengthFileOpen w funkcji nie ma wpływu. FilePut zapisuje wszystkie zmienne na dysku stale, czyli bez dopeł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 o długości dwóch bajtów. Liczba bajtów zapisanych jest równa liczbie znaków znajdujących się już w ciągu. Na przykład poniższe instrukcje zapisują 11 bajtów do pliku numer 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)

Źródło:
FileSystem.vb
Źródło:
FileSystem.vb
Źródło:
FileSystem.vb

Zapisuje dane ze zmiennej do pliku na dysku. Ta My funkcja zapewnia lepszą produktywność 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

Wymagane. Dowolna prawidłowa liczba plików.

Value
Int32

Wymagane. Prawidłowa nazwa zmiennej, która zawiera dane zapisane na dysku.

RecordNumber
Int64

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

Wyjątki

RecordNumber< 1 i nie równe -1.

Tryb pliku jest nieprawidłowy.

Przykłady

W tym przykładzie użyto FilePut funkcji do zapisywania 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

FilePut jest 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 na pozycji 2 i tak dalej. Jeśli pominięto RecordNumber, następny rekord lub bajt po ostatnim FileGet lub FilePut funkcji lub wskazywany przez ostatnią Seek funkcję jest zapisywany.

Argument StringIsFixedLength określa, czy funkcja interpretuje ciągi jako zmienną, czy stałą długość. FilePut nie zapisuje deskryptora długości, gdy argument ma wartość True. Jeśli używasz polecenia StringIsFixedLength = True z FilePutprogramem , musisz wykonać to samo z parametrem 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 na granicach długości rekordu. Odstęp między końcem jednego rekordu a początkiem następnego rekordu jest wypełniany istniejącą zawartością buforu plików. Ponieważ ilości danych uzupełniania nie można dokładnie określić, to zazwyczaj dobrze jest, gdy długość rekordu jest zgodna z długością zapisanych 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 RecordLength określona przez klauzulę w FileOpen funkcji musi być co najmniej dwie bajty większe niż rzeczywista długość ciągu.

  • Jeśli zapisywana zmienna jest obiektem zawierającym typ liczbowy, FilePut zapisuje dwie 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 określona RecordLength przez parametr w FileOpen funkcji musi być co najmniej dwie bajty większe niż rzeczywista liczba bajtów wymaganych do przechowywania zmiennej.

  • Jeśli zapisywana zmienna jest obiektem zawierającym ciąg, 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 mieć prawidłową długość.

  • Jeżeli zapisywaną zmienną jest tablica, można wybrać, czy odczytać deskryptor, by uzyskać informacje o wielkości i wymiarze tablicy. Visual Basic 6.0 i starsze wersje zapisują deskryptor plików dla tablic dynamicznych, bez uwzględniania tablicy o stałym rozmiarze. Według domyślnych ustawień programu Visual Basic 2005 deskryptor nie jest zapisywany. Aby napisać deskryptor, ustaw ArrayIsDynamic parametr na True. Podczas zapisywania tablicy należy dopasować sposób odczytywania tablicy; jeśli będzie odczytywana z deskryptorem, należy 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 * LiczbaOfDimensions). Długość rekordu RecordLength określona przez klauzulę w FileOpen funkcji musi być większa lub równa sumie wszystkich bajtów wymaganych do zapisu danych tablicy i deskryptora tablicy. Na przykład następująca deklaracja tablicy wymaga 218 bajtów, jeśli tablica zapisywana jest 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 zmiennej. Długość rekordu FileOpen określona przez klauzulę RecordLength 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 dopełniania 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.

    Uwaga

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

Tryb binarny

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

  • Klauzula RecordLengthFileOpen w funkcji nie ma wpływu. FilePut zapisuje wszystkie zmienne na dysku stale, czyli bez dopeł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 o długości dwóch bajtów. Liczba bajtów zapisanych jest równa liczbie znaków znajdujących się już w ciągu. Na przykład poniższe instrukcje zapisują 11 bajtów do pliku numer 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)

Źródło:
FileSystem.vb
Źródło:
FileSystem.vb
Źródło:
FileSystem.vb

Zapisuje dane ze zmiennej do pliku na dysku. Ta My funkcja zapewnia lepszą produktywność 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

Wymagane. Dowolna prawidłowa liczba plików.

Value
Array

Wymagane. Prawidłowa nazwa zmiennej, która zawiera dane zapisane na dysku.

RecordNumber
Int64

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

ArrayIsDynamic
Boolean

Opcjonalny. Dotyczy tylko podczas pisania tablicy. Określa, czy tablica ma być traktowana jako dynamiczna, oraz czy należy napisać deskryptor tablicy dla ciągu opisującego długość.

StringIsFixedLength
Boolean

Opcjonalny. Stosuje się tylko przy pisaniu ciągów. Określa, czy należy napisać deskryptor długości ciągu dwu bajtowego dla ciągu do pliku. 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 FilePut funkcji do zapisywania 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

FilePut jest 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 na pozycji 2 i tak dalej. Jeśli pominięto RecordNumber, następny rekord lub bajt po ostatnim FileGet lub FilePut funkcji lub wskazywany przez ostatnią Seek funkcję jest zapisywany.

Argument StringIsFixedLength określa, czy funkcja interpretuje ciągi jako zmienną, czy stałą długość. FilePut nie zapisuje deskryptora długości, gdy argument ma wartość True. Jeśli używasz polecenia StringIsFixedLength = True z FilePutprogramem , musisz wykonać to samo z parametrem 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 na granicach długości rekordu. Odstęp między końcem jednego rekordu a początkiem następnego rekordu jest wypełniany istniejącą zawartością buforu plików. Ponieważ ilości danych uzupełniania nie można dokładnie określić, to zazwyczaj dobrze jest, gdy długość rekordu jest zgodna z długością zapisanych 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 RecordLength określona przez klauzulę w FileOpen funkcji musi być co najmniej dwie bajty większe niż rzeczywista długość ciągu.

  • Jeśli zapisywana zmienna jest obiektem zawierającym typ liczbowy, FilePut zapisuje dwie 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 określona RecordLength przez parametr w FileOpen funkcji musi być co najmniej dwie bajty większe niż rzeczywista liczba bajtów wymaganych do przechowywania zmiennej.

  • Jeśli zapisywana zmienna jest obiektem zawierającym ciąg, 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 mieć prawidłową długość.

  • Jeżeli zapisywaną zmienną jest tablica, można wybrać, czy odczytać deskryptor, by uzyskać informacje o wielkości i wymiarze tablicy. Visual Basic 6.0 i starsze wersje zapisują deskryptor plików dla tablic dynamicznych, bez uwzględniania tablicy o stałym rozmiarze. Według domyślnych ustawień programu Visual Basic 2005 deskryptor nie jest zapisywany. Aby napisać deskryptor, ustaw ArrayIsDynamic parametr na True. Podczas zapisywania tablicy należy dopasować sposób odczytywania tablicy; jeśli będzie odczytywana z deskryptorem, należy 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 * LiczbaOfDimensions). Długość rekordu RecordLength określona przez klauzulę w FileOpen funkcji musi być większa lub równa sumie wszystkich bajtów wymaganych do zapisu danych tablicy i deskryptora tablicy. Na przykład następująca deklaracja tablicy wymaga 218 bajtów, jeśli tablica zapisywana jest 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 zmiennej. Długość rekordu FileOpen określona przez klauzulę RecordLength 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 dopełniania 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.

    Uwaga

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

Tryb binarny

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

  • Klauzula RecordLengthFileOpen w funkcji nie ma wpływu. FilePut zapisuje wszystkie zmienne na dysku stale, czyli bez dopeł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 o długości dwóch bajtów. Liczba bajtów zapisanych jest równa liczbie znaków znajdujących się już w ciągu. Na przykład poniższe instrukcje zapisują 11 bajtów do pliku numer 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)

Źródło:
FileSystem.vb
Źródło:
FileSystem.vb
Źródło:
FileSystem.vb

Zapisuje dane ze zmiennej do pliku na dysku. Ta My funkcja zapewnia lepszą produktywność 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

Wymagane. Dowolna prawidłowa liczba plików.

Value
Double

Wymagane. Prawidłowa nazwa zmiennej, która zawiera dane zapisane na dysku.

RecordNumber
Int64

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

Wyjątki

RecordNumber< 1 i nie równe -1.

Tryb pliku jest nieprawidłowy.

Przykłady

W tym przykładzie użyto FilePut funkcji do zapisywania 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

FilePut jest 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 na pozycji 2 i tak dalej. Jeśli pominięto RecordNumber, następny rekord lub bajt po ostatnim FileGet lub FilePut funkcji lub wskazywany przez ostatnią Seek funkcję jest zapisywany.

Argument StringIsFixedLength określa, czy funkcja interpretuje ciągi jako zmienną, czy stałą długość. FilePut nie zapisuje deskryptora długości, gdy argument ma wartość True. Jeśli używasz polecenia StringIsFixedLength = True z FilePutprogramem , musisz wykonać to samo z parametrem 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 na granicach długości rekordu. Odstęp między końcem jednego rekordu a początkiem następnego rekordu jest wypełniany istniejącą zawartością buforu plików. Ponieważ ilości danych uzupełniania nie można dokładnie określić, to zazwyczaj dobrze jest, gdy długość rekordu jest zgodna z długością zapisanych 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 RecordLength określona przez klauzulę w FileOpen funkcji musi być co najmniej dwie bajty większe niż rzeczywista długość ciągu.

  • Jeśli zapisywana zmienna jest obiektem zawierającym typ liczbowy, FilePut zapisuje dwie 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 określona RecordLength przez parametr w FileOpen funkcji musi być co najmniej dwie bajty większe niż rzeczywista liczba bajtów wymaganych do przechowywania zmiennej.

  • Jeśli zapisywana zmienna jest obiektem zawierającym ciąg, 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 mieć prawidłową długość.

  • Jeżeli zapisywaną zmienną jest tablica, można wybrać, czy odczytać deskryptor, by uzyskać informacje o wielkości i wymiarze tablicy. Visual Basic 6.0 i starsze wersje zapisują deskryptor plików dla tablic dynamicznych, bez uwzględniania tablicy o stałym rozmiarze. Według domyślnych ustawień programu Visual Basic 2005 deskryptor nie jest zapisywany. Aby napisać deskryptor, ustaw ArrayIsDynamic parametr na True. Podczas zapisywania tablicy należy dopasować sposób odczytywania tablicy; jeśli będzie odczytywana z deskryptorem, należy 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 * LiczbaOfDimensions). Długość rekordu RecordLength określona przez klauzulę w FileOpen funkcji musi być większa lub równa sumie wszystkich bajtów wymaganych do zapisu danych tablicy i deskryptora tablicy. Na przykład następująca deklaracja tablicy wymaga 218 bajtów, jeśli tablica zapisywana jest 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 zmiennej. Długość rekordu FileOpen określona przez klauzulę RecordLength 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 dopełniania 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.

    Uwaga

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

Tryb binarny

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

  • Klauzula RecordLengthFileOpen w funkcji nie ma wpływu. FilePut zapisuje wszystkie zmienne na dysku stale, czyli bez dopeł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 o długości dwóch bajtów. Liczba bajtów zapisanych jest równa liczbie znaków znajdujących się już w ciągu. Na przykład poniższe instrukcje zapisują 11 bajtów do pliku numer 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)

Źródło:
FileSystem.vb
Źródło:
FileSystem.vb
Źródło:
FileSystem.vb

Zapisuje dane ze zmiennej do pliku na dysku. Ta My funkcja zapewnia lepszą produktywność 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

Wymagane. Dowolna prawidłowa liczba plików.

Value
Decimal

Wymagane. Prawidłowa nazwa zmiennej, która zawiera dane zapisane na dysku.

RecordNumber
Int64

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

Wyjątki

RecordNumber< 1 i nie równe -1.

Tryb pliku jest nieprawidłowy.

Przykłady

W tym przykładzie użyto FilePut funkcji do zapisywania 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

FilePut jest 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 na pozycji 2 i tak dalej. Jeśli pominięto RecordNumber, następny rekord lub bajt po ostatnim FileGet lub FilePut funkcji lub wskazywany przez ostatnią Seek funkcję jest zapisywany.

Argument StringIsFixedLength określa, czy funkcja interpretuje ciągi jako zmienną, czy stałą długość. FilePut nie zapisuje deskryptora długości, gdy argument ma wartość True. Jeśli używasz polecenia StringIsFixedLength = True z FilePutprogramem , musisz wykonać to samo z parametrem 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 na granicach długości rekordu. Odstęp między końcem jednego rekordu a początkiem następnego rekordu jest wypełniany istniejącą zawartością buforu plików. Ponieważ ilości danych uzupełniania nie można dokładnie określić, to zazwyczaj dobrze jest, gdy długość rekordu jest zgodna z długością zapisanych 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 RecordLength określona przez klauzulę w FileOpen funkcji musi być co najmniej dwie bajty większe niż rzeczywista długość ciągu.

  • Jeśli zapisywana zmienna jest obiektem zawierającym typ liczbowy, FilePut zapisuje dwie 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 określona RecordLength przez parametr w FileOpen funkcji musi być co najmniej dwie bajty większe niż rzeczywista liczba bajtów wymaganych do przechowywania zmiennej.

  • Jeśli zapisywana zmienna jest obiektem zawierającym ciąg, 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 mieć prawidłową długość.

  • Jeżeli zapisywaną zmienną jest tablica, można wybrać, czy odczytać deskryptor, by uzyskać informacje o wielkości i wymiarze tablicy. Visual Basic 6.0 i starsze wersje zapisują deskryptor plików dla tablic dynamicznych, bez uwzględniania tablicy o stałym rozmiarze. Według domyślnych ustawień programu Visual Basic 2005 deskryptor nie jest zapisywany. Aby napisać deskryptor, ustaw ArrayIsDynamic parametr na True. Podczas zapisywania tablicy należy dopasować sposób odczytywania tablicy; jeśli będzie odczytywana z deskryptorem, należy 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 * LiczbaOfDimensions). Długość rekordu RecordLength określona przez klauzulę w FileOpen funkcji musi być większa lub równa sumie wszystkich bajtów wymaganych do zapisu danych tablicy i deskryptora tablicy. Na przykład następująca deklaracja tablicy wymaga 218 bajtów, jeśli tablica zapisywana jest 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 zmiennej. Długość rekordu FileOpen określona przez klauzulę RecordLength 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 dopełniania 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.

    Uwaga

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

Tryb binarny

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

  • Klauzula RecordLengthFileOpen w funkcji nie ma wpływu. FilePut zapisuje wszystkie zmienne na dysku stale, czyli bez dopeł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 o długości dwóch bajtów. Liczba bajtów zapisanych jest równa liczbie znaków znajdujących się już w ciągu. Na przykład poniższe instrukcje zapisują 11 bajtów do pliku numer 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)

Źródło:
FileSystem.vb
Źródło:
FileSystem.vb
Źródło:
FileSystem.vb

Zapisuje dane ze zmiennej do pliku na 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

Wymagane. Dowolna prawidłowa liczba plików.

Value
DateTime

Wymagane. Prawidłowa nazwa zmiennej, która zawiera dane zapisane na dysku.

RecordNumber
Int64

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

Wyjątki

RecordNumber< 1 i nie równe -1.

Tryb pliku jest nieprawidłowy.

Przykłady

W tym przykładzie użyto FilePut funkcji do zapisywania 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

FilePut jest 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 na pozycji 2 i tak dalej. Jeśli pominięto RecordNumber, następny rekord lub bajt po ostatnim FileGet lub FilePut funkcji lub wskazywany przez ostatnią Seek funkcję jest zapisywany.

Argument StringIsFixedLength określa, czy funkcja interpretuje ciągi jako zmienną, czy stałą długość. FilePut nie zapisuje deskryptora długości, gdy argument ma wartość True. Jeśli używasz polecenia StringIsFixedLength = True z FilePutprogramem , musisz wykonać to samo z parametrem 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 na granicach długości rekordu. Odstęp między końcem jednego rekordu a początkiem następnego rekordu jest wypełniany istniejącą zawartością buforu plików. Ponieważ ilości danych uzupełniania nie można dokładnie określić, to zazwyczaj dobrze jest, gdy długość rekordu jest zgodna z długością zapisanych 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 RecordLength określona przez klauzulę w FileOpen funkcji musi być co najmniej dwie bajty większe niż rzeczywista długość ciągu.

  • Jeśli zapisywana zmienna jest obiektem zawierającym typ liczbowy, FilePut zapisuje dwie 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 określona RecordLength przez parametr w FileOpen funkcji musi być co najmniej dwie bajty większe niż rzeczywista liczba bajtów wymaganych do przechowywania zmiennej.

  • Jeśli zapisywana zmienna jest obiektem zawierającym ciąg, 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 mieć prawidłową długość.

  • Jeżeli zapisywaną zmienną jest tablica, można wybrać, czy odczytać deskryptor, by uzyskać informacje o wielkości i wymiarze tablicy. Visual Basic 6.0 i starsze wersje zapisują deskryptor plików dla tablic dynamicznych, bez uwzględniania tablicy o stałym rozmiarze. Według domyślnych ustawień programu Visual Basic 2005 deskryptor nie jest zapisywany. Aby napisać deskryptor, ustaw ArrayIsDynamic parametr na True. Podczas zapisywania tablicy należy dopasować sposób odczytywania tablicy; jeśli będzie odczytywana z deskryptorem, należy 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 * LiczbaOfDimensions). Długość rekordu RecordLength określona przez klauzulę w FileOpen funkcji musi być większa lub równa sumie wszystkich bajtów wymaganych do zapisu danych tablicy i deskryptora tablicy. Na przykład następująca deklaracja tablicy wymaga 218 bajtów, jeśli tablica zapisywana jest 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 zmiennej. Długość rekordu FileOpen określona przez klauzulę RecordLength 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 dopełniania 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.

    Uwaga

    Pola ciągów, które mają więcej bajtów niż określony przez atrybut, są obcinane podczas zapisywania VBFixedString 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 w sposób ciągły, 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 o długości dwóch bajtów. Liczba bajtów zapisanych jest równa liczbie znaków znajdujących się już w ciągu. Na przykład poniższe instrukcje zapisują 11 bajtów do pliku numer 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)

Źródło:
FileSystem.vb
Źródło:
FileSystem.vb
Źródło:
FileSystem.vb

Zapisuje dane ze zmiennej do pliku na 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

Wymagane. Dowolna prawidłowa liczba plików.

Value
Char

Wymagane. Prawidłowa nazwa zmiennej, która zawiera dane zapisane na dysku.

RecordNumber
Int64

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

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 na pozycji 2 i tak dalej. Jeśli pominięto RecordNumber, zostanie zapisany następny rekord lub bajt po ostatniej FileGet funkcji lub FilePut wskazywany przez ostatnią Seek funkcję.

Argument StringIsFixedLength określa, czy funkcja interpretuje ciągi jako zmienną, czy stałą długość. FilePut nie zapisuje deskryptora długości, gdy argument ma wartość True. Jeśli używasz polecenia z elementem StringIsFixedLengthFilePut = True , musisz zrobić 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 początkiem następnego rekordu jest wypełniany istniejącą zawartością buforu plików. Ponieważ ilości danych uzupełniania nie można dokładnie określić, to zazwyczaj dobrze jest, gdy długość rekordu jest zgodna z długością zapisanych 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 być co najmniej dwie 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 dwu bajtowy deskryptor 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 mieć prawidłową długość.

  • Jeżeli zapisywaną zmienną jest tablica, można wybrać, czy odczytać deskryptor, by uzyskać informacje o wielkości i wymiarze tablicy. Visual Basic 6.0 i starsze wersje zapisują deskryptor plików dla tablic dynamicznych, bez uwzględniania tablicy o stałym rozmiarze. Według domyślnych ustawień programu Visual Basic 2005 deskryptor nie jest zapisywany. Aby napisać deskryptor, ustaw ArrayIsDynamic parametr na True. Podczas zapisywania tablicy należy dopasować sposób odczytywania tablicy; jeśli będzie odczytywana z deskryptorem, należy 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 * LiczbaDimensionów). Długość rekordu określona przez klauzulę RecordLength 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, jeśli tablica zapisywana jest na dysku.

    Dim MyArray(4, 9) As Integer
    
  • Jeśli zapisywana zmienna jest dowolnym innym typem zmiennej (nie ciągiem o zmiennej długości lub obiektem), FilePut zapisuje tylko dane zmiennej. Długość rekordu określona przez klauzulę RecordLength w FileOpen 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.

    Uwaga

    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 w sposób ciągły, 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 o długości dwóch bajtów. Liczba bajtów zapisanych jest równa liczbie znaków znajdujących się już w ciągu. Na przykład poniższe instrukcje zapisują 11 bajtów do pliku numer 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)

Źródło:
FileSystem.vb
Źródło:
FileSystem.vb
Źródło:
FileSystem.vb

Zapisuje dane ze zmiennej do pliku na dysku. Ta My funkcja zapewnia lepszą produktywność 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

Wymagane. Dowolna prawidłowa liczba plików.

Value
Byte

Wymagane. Prawidłowa nazwa zmiennej, która zawiera dane zapisane na dysku.

RecordNumber
Int64

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

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 na pozycji 2 i tak dalej. Jeśli pominięto RecordNumber, zostanie zapisany następny rekord lub bajt po ostatniej FileGet funkcji lub FilePut wskazywany przez ostatnią Seek funkcję.

Argument StringIsFixedLength określa, czy funkcja interpretuje ciągi jako zmienną, czy stałą długość. FilePut nie zapisuje deskryptora długości, gdy argument ma wartość True. Jeśli używasz polecenia z elementem StringIsFixedLengthFilePut = True , musisz zrobić 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 początkiem następnego rekordu jest wypełniany istniejącą zawartością buforu plików. Ponieważ ilości danych uzupełniania nie można dokładnie określić, to zazwyczaj dobrze jest, gdy długość rekordu jest zgodna z długością zapisanych 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 być co najmniej dwie bajty większe niż rzeczywista długość ciągu.

  • Jeśli zapisywana zmienna jest obiektem zawierającym typ liczbowy, FilePut zapisuje dwie 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 określona RecordLength przez parametr w FileOpen funkcji musi być co najmniej dwie bajty większe niż rzeczywista liczba bajtów wymaganych do przechowywania zmiennej.

  • Jeśli zapisywana zmienna jest obiektem zawierającym ciąg, 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 mieć prawidłową długość.

  • Jeżeli zapisywaną zmienną jest tablica, można wybrać, czy odczytać deskryptor, by uzyskać informacje o wielkości i wymiarze tablicy. Visual Basic 6.0 i starsze wersje zapisują deskryptor plików dla tablic dynamicznych, bez uwzględniania tablicy o stałym rozmiarze. Według domyślnych ustawień programu Visual Basic 2005 deskryptor nie jest zapisywany. Aby napisać deskryptor, ustaw ArrayIsDynamic parametr na True. Podczas zapisywania tablicy należy dopasować sposób odczytywania tablicy; jeśli będzie odczytywana z deskryptorem, należy 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 * LiczbaOfDimensions). Długość rekordu RecordLength określona przez klauzulę w FileOpen funkcji musi być większa lub równa sumie wszystkich bajtów wymaganych do zapisu danych tablicy i deskryptora tablicy. Na przykład następująca deklaracja tablicy wymaga 218 bajtów, jeśli tablica zapisywana jest 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 zmiennej. Długość rekordu FileOpen określona przez klauzulę RecordLength 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 dopełniania 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.

    Uwaga

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

Tryb binarny

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

  • Klauzula RecordLengthFileOpen w funkcji nie ma wpływu. FilePut zapisuje wszystkie zmienne na dysku stale, czyli bez dopeł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 o długości dwóch bajtów. Liczba bajtów zapisanych jest równa liczbie znaków znajdujących się już w ciągu. Na przykład poniższe instrukcje zapisują 11 bajtów do pliku numer 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)

Źródło:
FileSystem.vb
Źródło:
FileSystem.vb
Źródło:
FileSystem.vb

Zapisuje dane ze zmiennej do pliku na dysku. Ta My funkcja zapewnia lepszą produktywność 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

Wymagane. Dowolna prawidłowa liczba plików.

Value
Boolean

Wymagane. Prawidłowa nazwa zmiennej, która zawiera dane zapisane na dysku.

RecordNumber
Int64

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

Wyjątki

RecordNumber< 1 i nie równe -1.

Tryb pliku jest nieprawidłowy.

Przykłady

W tym przykładzie użyto FilePut funkcji do zapisywania 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

FilePut jest 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 na pozycji 2 i tak dalej. Jeśli pominięto RecordNumber, następny rekord lub bajt po ostatnim FileGet lub FilePut funkcji lub wskazywany przez ostatnią Seek funkcję jest zapisywany.

Argument StringIsFixedLength określa, czy funkcja interpretuje ciągi jako zmienną, czy stałą długość. FilePut nie zapisuje deskryptora długości, gdy argument ma wartość True. Jeśli używasz polecenia StringIsFixedLength = True z FilePutprogramem , musisz wykonać to samo z parametrem 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 na granicach długości rekordu. Odstęp między końcem jednego rekordu a początkiem następnego rekordu jest wypełniany istniejącą zawartością buforu plików. Ponieważ ilości danych uzupełniania nie można dokładnie określić, to zazwyczaj dobrze jest, gdy długość rekordu jest zgodna z długością zapisanych 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 RecordLength określona przez klauzulę w FileOpen funkcji musi być co najmniej dwie bajty większe niż rzeczywista długość ciągu.

  • Jeśli zapisywana zmienna jest obiektem zawierającym typ liczbowy, FilePut zapisuje dwie 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 określona RecordLength przez parametr w FileOpen funkcji musi być co najmniej dwie bajty większe niż rzeczywista liczba bajtów wymaganych do przechowywania zmiennej.

  • Jeśli zapisywana zmienna jest obiektem zawierającym ciąg, 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 mieć prawidłową długość.

  • Jeżeli zapisywaną zmienną jest tablica, można wybrać, czy odczytać deskryptor, by uzyskać informacje o wielkości i wymiarze tablicy. Visual Basic 6.0 i starsze wersje zapisują deskryptor plików dla tablic dynamicznych, bez uwzględniania tablicy o stałym rozmiarze. Według domyślnych ustawień programu Visual Basic 2005 deskryptor nie jest zapisywany. Aby napisać deskryptor, ustaw ArrayIsDynamic parametr na True. Podczas zapisywania tablicy należy dopasować sposób odczytywania tablicy; jeśli będzie odczytywana z deskryptorem, należy 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 * LiczbaOfDimensions). Długość rekordu RecordLength określona przez klauzulę w FileOpen funkcji musi być większa lub równa sumie wszystkich bajtów wymaganych do zapisu danych tablicy i deskryptora tablicy. Na przykład następująca deklaracja tablicy wymaga 218 bajtów, jeśli tablica zapisywana jest 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 zmiennej. Długość rekordu FileOpen określona przez klauzulę RecordLength 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 dopełniania 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.

    Uwaga

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

Tryb binarny

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

  • Klauzula RecordLengthFileOpen w funkcji nie ma wpływu. FilePut zapisuje wszystkie zmienne na dysku stale, czyli bez dopeł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 o długości dwóch bajtów. Liczba bajtów zapisanych jest równa liczbie znaków znajdujących się już w ciągu. Na przykład poniższe instrukcje zapisują 11 bajtów do pliku numer 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)

Źródło:
FileSystem.vb
Źródło:
FileSystem.vb
Źródło:
FileSystem.vb

Zapisuje dane ze zmiennej do pliku na dysku. Ta My funkcja zapewnia lepszą produktywność 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

Wymagane. Dowolna prawidłowa liczba plików.

Value
Int16

Wymagane. Prawidłowa nazwa zmiennej, która zawiera dane zapisane na dysku.

RecordNumber
Int64

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

Wyjątki

RecordNumber< 1 i nie równe -1.

Tryb pliku jest nieprawidłowy.

Przykłady

W tym przykładzie użyto FilePut funkcji do zapisywania 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

FilePut jest 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 na pozycji 2 i tak dalej. Jeśli pominięto RecordNumber, następny rekord lub bajt po ostatnim FileGet lub FilePut funkcji lub wskazywany przez ostatnią Seek funkcję jest zapisywany.

Argument StringIsFixedLength określa, czy funkcja interpretuje ciągi jako zmienną, czy stałą długość. FilePut nie zapisuje deskryptora długości, gdy argument ma wartość True. Jeśli używasz polecenia StringIsFixedLength = True z FilePutprogramem , musisz wykonać to samo z parametrem 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 na granicach długości rekordu. Odstęp między końcem jednego rekordu a początkiem następnego rekordu jest wypełniany istniejącą zawartością buforu plików. Ponieważ ilości danych uzupełniania nie można dokładnie określić, to zazwyczaj dobrze jest, gdy długość rekordu jest zgodna z długością zapisanych 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 RecordLength określona przez klauzulę w FileOpen funkcji musi być co najmniej dwie bajty większe niż rzeczywista długość ciągu.

  • Jeśli zapisywana zmienna jest obiektem zawierającym typ liczbowy, FilePut zapisuje dwie 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 określona RecordLength przez parametr w FileOpen funkcji musi być co najmniej dwie bajty większe niż rzeczywista liczba bajtów wymaganych do przechowywania zmiennej.

  • Jeśli zapisywana zmienna jest obiektem zawierającym ciąg, 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 mieć prawidłową długość.

  • Jeżeli zapisywaną zmienną jest tablica, można wybrać, czy odczytać deskryptor, by uzyskać informacje o wielkości i wymiarze tablicy. Visual Basic 6.0 i starsze wersje zapisują deskryptor plików dla tablic dynamicznych, bez uwzględniania tablicy o stałym rozmiarze. Według domyślnych ustawień programu Visual Basic 2005 deskryptor nie jest zapisywany. Aby napisać deskryptor, ustaw ArrayIsDynamic parametr na True. Podczas zapisywania tablicy należy dopasować sposób odczytywania tablicy; jeśli będzie odczytywana z deskryptorem, należy 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 * LiczbaOfDimensions). Długość rekordu RecordLength określona przez klauzulę w FileOpen funkcji musi być większa lub równa sumie wszystkich bajtów wymaganych do zapisu danych tablicy i deskryptora tablicy. Na przykład następująca deklaracja tablicy wymaga 218 bajtów, jeśli tablica zapisywana jest 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 zmiennej. Długość rekordu FileOpen określona przez klauzulę RecordLength 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 dopełniania 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.

    Uwaga

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

Tryb binarny

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

  • Klauzula RecordLengthFileOpen w funkcji nie ma wpływu. FilePut zapisuje wszystkie zmienne na dysku stale, czyli bez dopeł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 o długości dwóch bajtów. Liczba bajtów zapisanych jest równa liczbie znaków znajdujących się już w ciągu. Na przykład poniższe instrukcje zapisują 11 bajtów do pliku numer 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