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
RecordLength
klausulFileOpen
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 olehRecordLength
klausulFileOpen
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 meneruskanTrue
keStringIsFixedLength
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 dalamFileOpen
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 denganFilePutObject
) diawali oleh deskriptor yang panjangnya sama dengan 2 ditambah 8 kali jumlah dimensi: 2 + 8 * NumberOfDimensions. Panjang rekaman yang ditentukan olehRecordLength
klausul dalamFileOpen
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
dalamFileOpen
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.