Bagikan melalui


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.

public static void FileGetObject (int FileNumber, ref object Value, long RecordNumber = -1);
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

Wajib diisi. Nomor file apa pun yang valid.

Value
Object

Wajib diisi. Nama variabel yang valid di mana data dibaca.

RecordNumber
Int64

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

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 FileGetObject digunakan alih-alih FileGet untuk menghindari ambiguitas pada waktu kompilasi jika jenis Object dikembalikan alih-alih jenis lain, seperti , Long, Short, dan sebagainyaInteger.

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 valid dalam Random mode dan Binary .

Data yang dibaca dengan FileGetObject biasanya ditulis dengan FilePutObject.

Rekaman atau byte pertama 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. Ruang antara akhir satu rekaman dan awal rekaman berikutnya dilapisi dengan konten buffer file yang ada. Karena jumlah data padding tidak dapat ditentukan dengan tepat, ada baiknya untuk memiliki panjang rekaman yang cocok dengan panjang data yang dibaca.

  • Jika variabel yang dibaca adalah string, secara default FileGetObject membaca deskriptor dua byte yang berisi panjang string dan kemudian membaca data yang masuk ke variabel. Oleh karena itu, panjang rekaman yang ditentukan oleh RecordLength klausul FileOpen fungsi harus setidaknya dua byte 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 saat 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 rekaman 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.

Penting

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