FileSystem.FileGetObject(Int32, Object, Int64) Metode

Definisi

Membaca data dari file disk terbuka ke dalam variabel. Fitur ini My memberi Anda produktivitas dan performa yang lebih baik dalam operasi I/O file daripada FileGetObject. Untuk informasi selengkapnya, lihat FileSystem .

[System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("The target object type could not be statically analyzed and may be trimmed")]
public static void FileGetObject(int FileNumber, ref object Value, long RecordNumber = -1);
public static void FileGetObject(int FileNumber, ref object Value, long RecordNumber = -1);
[<System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("The target object type could not be statically analyzed and may be trimmed")>]
static member FileGetObject : int * obj * int64 -> unit
static member FileGetObject : int * obj * int64 -> unit
Public Sub FileGetObject (FileNumber As Integer, ByRef Value As Object, Optional RecordNumber As Long = -1)

Parameter

FileNumber
Int32

Required. Nomor file apa pun yang valid.

Value
Object

Required. Nama variabel yang valid tempat data dibaca.

RecordNumber
Int64

Optional. Rekam nomor (Random file mode) atau nomor byte (Binary file mode) di mana pembacaan dimulai.

Atribut

Contoh

Contoh berikut membaca rekaman ke dalam file pengujian lalu mengambilnya.

Dim c As Object = "test"
FileSystem.FileOpen(1, "test.dat", OpenMode.Binary)
FileSystem.FilePutObject(1, "ABCDEF")
FileSystem.Seek(1, 1)
FileSystem.FileGetObject(1, c)
MsgBox(c)
FileSystem.FileClose(1)

Keterangan

Fungsi ini digunakan alih-alih FileGetObject untuk menghindari ambiguitas pada waktu kompilasi jika jenis FileGet dikembalikan alih-alih jenis lain, seperti , , ObjectInteger, dan sebagainyaLong.Short

Jika Anda ingin menuliskan jenisnya Variant , FileGetObject diperlukan. Jika ragu, jika Anda menggunakan objek untuk parameter kedua, selalu disarankan agar Anda menggunakan FilePutObject dan FileGetObject.

FileGetObject hanya berlaku dalam Random mode dan Binary .

Data yang dibaca dengan FileGetObject biasanya ditulis dengan FilePutObject.

Rekaman pertama atau byte dalam file berada di posisi 1, rekaman atau byte kedua berada di posisi 2, dan sebagainya. Jika Anda menghilangkan RecordNumber, FileGetObject membaca rekaman atau byte setelah fungsi terakhir FileGetObject atau FilePutObject (atau ditujukkan oleh fungsi terakhir Seek ).

Mode Acak

Untuk file yang dibuka dalam Random mode, aturan berikut berlaku:

  • Jika panjang data yang dibaca kurang dari panjang yang ditentukan dalam RecordLength klausul FileOpen fungsi, FileGetObject membaca rekaman berikutnya pada batas panjang rekaman. Spasi antara akhir satu rekaman dan awal rekaman berikutnya diisi dengan konten buffer file yang ada. Karena jumlah data padding tidak dapat ditentukan dengan tepat, ada baiknya untuk memiliki panjang catatan yang cocok dengan panjang data yang dibaca.

  • Jika variabel yang dibaca adalah string, secara default FileGetObject membaca deskriptor dua byte yang berisi panjang string lalu membaca data yang masuk ke variabel. Oleh karena itu, panjang catatan yang ditentukan oleh RecordLength klausul FileOpen fungsi harus setidaknya dua byte yang lebih besar dari panjang string yang sebenarnya. Visual Basic 6.0 dan versi yang lebih lama mendukung string panjang tetap dan saat dibaca ke file, deskriptor panjang tidak ditulis. Jika Anda ingin membaca string tanpa deskriptor, Anda harus meneruskan True ke StringIsFixedLength parameter , dan string yang Anda baca harus memiliki panjang yang benar.

  • Jika variabel yang dibaca adalah array, maka panjang rekaman yang ditentukan oleh RecordLength parameter dalam FileOpen fungsi harus lebih besar dari atau sama dengan jumlah semua byte yang diperlukan untuk menulis data array dan deskriptor array. Deskriptor menentukan peringkat array, ukuran, dan batas bawah untuk setiap peringkat. Panjangnya sama dengan 2 ditambah 8 kali jumlah dimensi: 2 + 8 * NumberOfDimensions.

    Misalnya, deklarasi array berikut memerlukan 218 byte ketika array ditulis ke disk:

    Dim MyArray(4, 9) As Integer
    

    218 byte didistribusikan sebagai berikut: 18 byte untuk deskriptor (2 + 8 * 2), dan 100 byte untuk data (5 * 10 * 4).

  • FileGetObject membaca elemen struktur seolah-olah masing-masing dibaca secara individual, kecuali bahwa tidak ada padding antar elemen. Pada disk, array dinamis dalam jenis yang ditentukan pengguna (ditulis dengan FilePutObject) diawali oleh deskriptor yang panjangnya sama dengan 2 ditambah 8 kali jumlah dimensi: 2 + 8 * NumberOfDimensions. Panjang catatan yang ditentukan oleh RecordLength klausul dalam FileOpen fungsi harus lebih besar dari atau sama dengan jumlah semua byte yang diperlukan untuk membaca elemen individual, termasuk array apa pun dan deskriptornya. Kelas VBFixedStringAttribute dapat diterapkan ke bidang string dalam struktur untuk menunjukkan ukuran string saat ditulis ke disk.

Mode Biner

Untuk file yang dibuka dalam Binary mode, semua Random aturan berlaku, dengan pengecualian ini:

  • Klausa RecordLength dalam FileOpen fungsi tidak berpengaruh. FileGetObject membaca semua variabel dari disk secara berdekatan, yaitu, tanpa padding di antara rekaman.

  • Untuk array apa pun selain array dalam struktur, FileGetObject hanya membaca data. Tidak ada deskriptor yang dibaca.

FileGetObject membaca string panjang variabel yang bukan elemen struktur tanpa mengharapkan deskriptor panjang dua byte. Jumlah byte yang dibaca sama dengan jumlah karakter yang sudah ada dalam string.

Important

Saat membaca dari file, jangan membuat keputusan tentang konten file berdasarkan ekstensi nama file. Misalnya, file bernama Form1.vb mungkin bukan file sumber Visual Basic.

Berlaku untuk

Lihat juga