Bagikan melalui


FileSystem.FilePutObject(Int32, Object, Int64) Metode

Definisi

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

public static void FilePutObject (int FileNumber, object Value, long RecordNumber = -1);
static member FilePutObject : int * obj * int64 -> unit
Public Sub FilePutObject (FileNumber As Integer, 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 valid yang berisi data yang ditulis ke disk.

RecordNumber
Int64

Opsional. Nomor rekaman (Random file mode) atau nomor byte (Binary file mode) di mana penulisan dimulai.

Contoh

Contoh ini menggunakan FilePutObject fungsi untuk menulis string ke file.

Sub WriteData()
    Dim text As String = "test"
    FileOpen(1, "test.bin", OpenMode.Binary)
    FilePutObject(1, text)
    FileClose(1)
End Sub

Keterangan

Fungsi FilePutObject ini digunakan alih-alih FilePut untuk menghindari ambiguitas pada waktu kompilasi jika jenis Object diteruskan alih-alih jenis lain, seperti , , LongShort, dan sebagainyaInteger.

FilePutObject menulis dan membaca deskriptor yang menjelaskan objek . Jika Anda ingin menuliskan jenisnya Variant , FilePutObject diperlukan. Jika ragu, jika Anda menggunakan objek untuk parameter kedua, kami sarankan Anda selalu menggunakan FilePutObject dan FileGetObject.

FilePutObject hanya valid dalam Random mode dan Binary .

Data yang ditulis dengan FilePutObject biasanya dibaca dari file dengan menggunakan FileGetObject.

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

Argumen StringIsFixedLength mengontrol apakah fungsi menginterpretasikan string sebagai variabel atau panjang tetap. FilePutObject tidak menulis deskriptor panjang ketika argumen adalah True. Jika Anda menggunakan StringIsFixedLength = True dengan FilePutObject, Anda harus melakukan hal yang sama dengan FileGetObject, dan Anda juga harus memastikan bahwa string diinisialisasi sesuai panjang yang diharapkan.

Mode Acak

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

  • Jika panjang data yang ditulis kurang dari panjang yang ditentukan dalam RecordLength klausul FileOpen fungsi, FilePutObject tulis 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, umumnya merupakan ide yang baik untuk memiliki panjang rekaman yang cocok dengan panjang data yang ditulis. Jika panjang data yang ditulis lebih besar dari panjang yang ditentukan dalam RecordLength klausul FileOpen fungsi, pengecualian akan dilemparkan.

  • Jika variabel yang ditulis adalah objek yang berisi jenis numerik, FilePutObject menulis dua byte yang mengidentifikasi VarType objek dan kemudian menulis variabel. Misalnya, saat menulis objek yang berisi bilangan bulat, FilePutObject tulis enam byte: dua byte yang mengidentifikasi objek sebagai VarType(3) (Integer) dan empat byte yang berisi data. Panjang rekaman yang ditentukan oleh RecordLength parameter dalam FileOpen fungsi harus setidaknya dua byte lebih besar dari jumlah byte aktual yang diperlukan untuk menyimpan variabel.

  • Jika variabel yang ditulis adalah objek yang berisi string, FilePutObject menulis deskriptor dua byte yang mengidentifikasi VarType(8) objek, deskriptor dua byte yang menunjukkan panjang string, lalu menulis data string. Panjang rekaman yang ditentukan oleh RecordLength parameter dalam FileOpen fungsi harus setidaknya empat byte yang lebih besar dari panjang string yang sebenarnya. Jika Anda ingin menempatkan string tanpa deskriptor, Anda harus meneruskan True ke StringIsFixedLength parameter , dan string yang Anda baca harus memiliki panjang yang benar.

  • Jika variabel yang ditulis adalah array, maka panjang rekaman yang ditentukan oleh RecordLength klausul 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).

Mode Biner

Untuk file yang dibuka dalam Binary mode, semua Random aturan mode berlaku, kecuali:

  • Klausa RecordLength dalam FileOpen fungsi tidak berpengaruh. FilePutObject menulis semua variabel ke disk secara berdekatan, yaitu, tanpa padding di antara rekaman.

Berlaku untuk

Lihat juga