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 .
[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
RecordLengthklausulFileOpenfungsi,FileGetObjectmembaca 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
FileGetObjectmembaca deskriptor dua byte yang berisi panjang string lalu membaca data yang masuk ke variabel. Oleh karena itu, panjang catatan yang ditentukan olehRecordLengthklausulFileOpenfungsi 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 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 ketika 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 catatan 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.
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.