FileSystem.FileGetObject(Int32, Object, Int64) Metode
Definisi
Penting
Beberapa informasi terkait produk prarilis yang dapat diubah secara signifikan sebelum dirilis. Microsoft tidak memberikan jaminan, tersirat maupun tersurat, sehubungan dengan informasi yang diberikan di sini.
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
RecordLengthklausulFileOpenfungsi,FileGetObjectmembaca 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
FileGetObjectmembaca deskriptor dua byte yang berisi panjang string dan kemudian membaca data yang masuk ke variabel. Oleh karena itu, panjang rekaman yang ditentukan olehRecordLengthklausulFileOpenfungsi 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 meneruskanTruekeStringIsFixedLengthparameter , dan string yang Anda baca harus memiliki panjang yang benar.Jika variabel yang dibaca adalah array, maka panjang rekaman yang ditentukan oleh
RecordLengthparameter dalamFileOpenfungsi 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 Integer218 byte didistribusikan sebagai berikut: 18 byte untuk deskriptor (2 + 8 * 2), dan 100 byte untuk data (5 * 10 * 4).
FileGetObjectmembaca 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 denganFilePutObject) diawali oleh deskriptor yang panjangnya sama dengan 2 ditambah 8 kali jumlah dimensi: 2 + 8 * NumberOfDimensions. Panjang rekaman yang ditentukan olehRecordLengthklausul dalamFileOpenfungsi 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
RecordLengthdalamFileOpenfungsi tidak berpengaruh.FileGetObjectmembaca semua variabel dari disk secara berdekatan, yaitu, tanpa padding di antara rekaman.Untuk array apa pun selain array dalam struktur,
FileGetObjecthanya 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.