Latest web development tutorials

Lua mengajukan I / O

Lua I / O perpustakaan untuk membaca dan pengolahan file. Dibagi ke dalam pola sederhana (seperti C), modus penuh.

  • mode sederhana (model sederhana) memiliki input file saat ini dan file output saat ini, dan menyediakan untuk operasi yang berhubungan dengan file.
  • modus penuh (model yang lengkap) menggunakan file pegangan eksternal untuk mencapai. Hal ini di wajah dalam bentuk obyek, semua operasi file akan didefinisikan sebagai metode menangani file

Dalam mode sederhana untuk melakukan beberapa operasi file sederhana ketika lebih tepat. Tapi setelah beberapa operasi file canggih, model sederhana tampaknya tidak memadai. Misalnya saat membaca operasi ini beberapa file, menggunakan mode Full lebih cocok.

File yang terbuka Pernyataan operasi adalah sebagai berikut:

file = io.open (filename [, mode])

Modus nilai adalah:

mode deskripsi
r Dibuka read-only file, file tersebut harus ada.
w Buka write-satunya file, jika file ada, panjang file dibersihkan dengan 0, yaitu, isi file tersebut akan hilang. Jika file tidak ada, membuat file.
sebuah Dalam tambahan write-only file dibuka. Jika file tidak ada, pembentukan file, jika file ada, data tulis akan ditambahkan ke akhir file, isi dari file asli akan dipertahankan. (Karakter EOF milik)
r + Kedua membaca dan menulis untuk membuka file, file tersebut harus ada.
w + Terbuka untuk membaca dan menulis file, jika file ada, panjang file dari nol jelas bahwa isi file akan hilang. Jika file tidak ada, membuat file.
a + Dan serupa, tetapi file ini dapat dibaca dan ditulis
b modus biner, jika file tersebut adalah file biner, Anda dapat menambahkan b
+ Tanda menunjukkan file dapat membaca dan menulis

Modus sederhana

mode sederhana menggunakan standar I / O atau menggunakan file masukan saat ini dan file output saat ini.

Berikut ini adalah file kode file.lua, operasi file test.lua (jika Anda tidak perlu membuat file), sebagai berikut:

-- 以只读方式打开文件
file = io.open("test.lua", "r")

-- 设置默认输入文件为 test.lua
io.input(file)

-- 输出文件第一行
print(io.read())

-- 关闭打开的文件
io.close(file)

-- 以附加的方式打开只写文件
file = io.open("test.lua", "a")

-- 设置默认输出文件为 test.lua
io.output(file)

-- 在文件最后一行添加 Lua 注释
io.write("--  test.lua 文件末尾注释")

-- 关闭打开的文件
io.close(file)

Pelaksanaan kode di atas, Anda akan menemukan bahwa baris pertama dari informasi test.ua file output dan baris terakhir pada file tambahkan lua komentar. Saya di sini sebagai output adalah:

-- test.lua 文件

Dalam contoh di atas kita menggunakan io "x", dimana io.read (), kita tidak memiliki parameter, parameter dapat menjadi salah satu tabel berikut:

mode deskripsi
"* N" Sejumlah dibaca dan kembali itu. Contoh: file.read ( "* n")
"* A" Membaca seluruh file dari lokasi saat ini. Contoh: file.read ( "* a")
"* L" (default) Membaca baris berikutnya di akhir file (EOF) di kembali nil. Contoh: file.read ( "* l")
jumlah Mengembalikan sejumlah karakter tertentu dalam string, atau ketika EOF kembali nihil. Contoh: file.read (5)

Metode io lainnya adalah:

  • io.tmpfile (): mengembalikan pegangan untuk file sementara, file dibuka dalam mode pembaruan otomatis dihapus ketika program berakhir

  • io.type (file): mendeteksi apakah file obj menangani tersedia

  • io.flush (): menulis buffer semua data ke file

  • io.lines (opsional nama file): Mengembalikan fungsi iterator, setiap panggilan akan mendapatkan baris dalam file, ketika akhir file tersebut, ia akan kembali nihil, namun tidak menutup file


Modus penuh

Biasanya kita perlu berurusan dengan beberapa file pada saat yang sama. Kita perlu menggunakan file: function_name bukan metode io.function_name. Contoh berikut menunjukkan file yang sama pada waktu yang sama:

-- 以只读方式打开文件
file = io.open("test.lua", "r")

-- 输出文件第一行
print(file:read())

-- 关闭打开的文件
file:close()

-- 以附加的方式打开只写文件
file = io.open("test.lua", "a")

-- 在文件最后一行添加 Lua 注释
file:write("--test")

-- 关闭打开的文件
file:close()

Pelaksanaan kode di atas, Anda akan menemukan bahwa baris pertama dari informasi test.ua file output dan baris terakhir pada file tambahkan lua komentar. Saya di sini sebagai output adalah:

-- test.lua 文件

membaca parameter konsisten dengan modus sederhana.

metode lain:

  • File: mencari (mana opsional, opsional offset): mengatur dan mengambil posisi file saat ini, sukses, mengembalikan posisi file akhir (dalam byte), gagal nil ditambah pesan kesalahan dikembalikan.Mana nilai parameter dapat:

    • "Set": Dari awal file
    • "Cur": Dari posisi saat ini [default]
    • "End": mulai dari akhir file
    • offset: default adalah 0
    Tanpa berkas parameter: mencari () mengembalikan lokasi saat ini, berkas: mencari ( "mengatur") ditargetkan header, file: mencari ( "end") untuk mencari akhir file dan mengembalikan ukuran file
  • File: flush (): menulis buffer semua data ke file

  • io.lines (opsional nama file): membuka file nama file modus baca yang ditentukan dan mengembalikan fungsi iterator, setiap panggilan akan mengajukan line, ketika akhir file tersebut, ia akan kembali nil, dan secara otomatis menutup file.
    Jika parameter belt io.lines () <=> io.input (): garis (); perangkat input default untuk membaca isi, tapi akhirnya tidak menutup file, seperti

    for line in io.lines("main.lua") do
    
      print(line)
    
      end
    

Contoh berikut menggunakan mencari metode untuk mencari posisi file kedua dari belakang 25 dan menggunakan metode read * parameter, membaca seluruh file dari lokasi saat ini (yang kedua dari belakang posisi 25).

-- 以只读方式打开文件
file = io.open("test.lua", "r")

file:seek("end",-25)
print(file:read("*a"))

-- 关闭打开的文件
file:close()

Hasilnya saya adalah output di sini:

st.lua 文件末尾--test