Latest web development tutorials

ยื่น Lua I / O

Lua I / O ห้องสมุดสำหรับการอ่านและการประมวลผลไฟล์ แบ่งออกเป็นรูปแบบง่าย (เช่น C), โหมดเต็ม

  • โหมดแบบง่าย (แบบง่ายๆ) มีแฟ้มใส่ในปัจจุบันและไฟล์ที่ส่งออกในปัจจุบันและจัดให้มีการดำเนินงานที่เกี่ยวข้องกับไฟล์เหล่านี้
  • โหมดเต็ม (สมบูรณ์แบบ) โดยใช้ด้ามแฟ้มภายนอกเพื่อให้บรรลุ มันมีอยู่ในใบหน้าในรูปแบบของวัตถุที่ดำเนินงานไฟล์ทั้งหมดจะถูกกำหนดให้เป็นวิธีการของไฟล์ที่จับ

ในโหมดง่ายที่จะทำแฟ้มการดำเนินงานบางอย่างง่ายเมื่อมีความเหมาะสมมากขึ้น แต่หลังจากการดำเนินการบางไฟล์ขั้นสูงรูปแบบที่เรียบง่ายที่ดูเหมือนจะไม่เพียงพอ ยกตัวอย่างเช่นในขณะที่อ่านการดำเนินการนี้หลายไฟล์ใช้โหมดเต็มความเหมาะสมมากขึ้น

งบดำเนินการเปิดไฟล์ดังต่อไปนี้:

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

โหมดราคา ได้แก่ :

โหมด ลักษณะ
R เปิดอ่านอย่างเดียวไฟล์ไฟล์ต้องมีอยู่
W เปิดแฟ้มเขียนเท่านั้นถ้าไฟล์ที่มีอยู่, ความยาวไฟล์จะถูกเคลียร์ 0 นั่นคือเนื้อหาของไฟล์จะหายไป ถ้าไฟล์ไม่อยู่สร้างไฟล์
ในแฟ้มการเขียนเท่านั้นที่มีการเปิดเพิ่มเติม หากไฟล์ไม่ได้อยู่ในสถานประกอบการของไฟล์ถ้าไฟล์ที่มีอยู่, เขียนข้อมูลจะถูกเพิ่มไปยังจุดสิ้นสุดของไฟล์เนื้อหาของไฟล์ต้นฉบับจะถูกเก็บรักษาไว้ (ตัวอักษร EOF ลิขสิทธิ์)
R + ทั้งการอ่านและการเขียนเพื่อเปิดไฟล์ไฟล์ที่จะต้องมีอยู่
W + เปิดให้อ่านและเขียนไฟล์ถ้าไฟล์ที่มีอยู่ความยาวของแฟ้มของศูนย์ที่ชัดเจนว่าเนื้อหาของแฟ้มจะหายไป ถ้าไฟล์ไม่อยู่สร้างไฟล์
A + และที่คล้ายกัน แต่ไฟล์นี้สามารถอ่านและเขียนได้
B โหมดไบนารีถ้าไฟล์เป็นไฟล์ไบนารีคุณสามารถเพิ่มข
+ เข้าสู่ระบบบ่งชี้ว่าไฟล์ที่สามารถอ่านและเขียน

โหมดธรรมดา

โหมดแบบง่ายโดยใช้มาตรฐานของ I / O หรือใช้แฟ้มใส่ในปัจจุบันและไฟล์ที่ส่งออกในปัจจุบัน

ต่อไปนี้เป็นรหัสไฟล์ file.lua ไฟล์ test.lua การดำเนินงาน (ถ้าคุณไม่จำเป็นต้องสร้างไฟล์) ดังต่อไปนี้:

-- 以只读方式打开文件
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)

ดำเนินการตามรหัสข้างต้นคุณจะพบว่าบรรทัดแรกของข้อมูล test.ua ไฟล์ที่ส่งออกและบรรทัดสุดท้ายในแฟ้มเพิ่มความคิดเห็น Lua ฉันอยู่ที่นี่เป็นผลลัพธ์คือ:

-- test.lua 文件

ในตัวอย่างข้างต้นเราใช้ IO "X" ประเด็น io.read () เราไม่ได้มีพารามิเตอร์พารามิเตอร์สามารถเป็นหนึ่งในตารางต่อไปนี้:

โหมด ลักษณะ
"* N" จำนวนที่อ่านและกลับ ตัวอย่าง: file.read ( "* N")
"* A" อ่านไฟล์ทั้งหมดจากตำแหน่งปัจจุบัน ตัวอย่าง: file.read ( "* a")
"* L" (เริ่มต้น) อ่านบรรทัดต่อไปในตอนท้ายของไฟล์ (EOF) ที่ผลตอบแทนที่ศูนย์ ตัวอย่าง: file.read ( "L *")
จำนวน ส่งคืนตามจำนวนที่ระบุตัวอักษรในสตริงหรือเมื่อ EOF ส่งกลับศูนย์ ตัวอย่าง: file.read (5)

วิธีการ IO อื่น ๆ :

  • io.tmpfile (): จับส่งกลับไปยังไฟล์ชั่วคราวไฟล์จะถูกเปิดในโหมดอัปเดตลบโดยอัตโนมัติเมื่อสิ้นสุดโปรแกรม

  • io.type (File): ตรวจสอบว่าไฟล์ obj หูหิ้วใช้ได้

  • io.flush (): เขียนบัฟเฟอร์ข้อมูลทั้งหมดไปยังแฟ้ม

  • io.lines (ชื่อไฟล์ตัวเลือก): ส่งกลับฟังก์ชัน iterator, การโทรแต่ละครั้งจะได้รับสายในแฟ้มเมื่อปลายของไฟล์ก็จะกลับเป็นศูนย์ แต่ไม่ได้ปิดแฟ้ม


โหมดเต็มรูปแบบ

เรามักจะต้องจัดการกับหลายไฟล์ในเวลาเดียวกัน เราจำเป็นต้องใช้ไฟล์: function_name วิธี io.function_name แทน ตัวอย่างต่อไปนี้แสดงให้เห็นถึงไฟล์เดียวกันในเวลาเดียวกันเป็น:

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

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

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

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

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

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

ดำเนินการตามรหัสข้างต้นคุณจะพบว่าบรรทัดแรกของข้อมูล test.ua ไฟล์ที่ส่งออกและบรรทัดสุดท้ายในแฟ้มเพิ่มความคิดเห็น Lua ฉันอยู่ที่นี่เป็นผลลัพธ์คือ:

-- test.lua 文件

อ่านค่าพารามิเตอร์ที่สอดคล้องกับโหมดแบบง่าย

วิธีการอื่น ๆ :

  • ไฟล์: แสวงหา (มาจากไหนเลือกตัวเลือก offset): ตั้งค่าและดึงข้อมูลตำแหน่งของไฟล์ปัจจุบันประสบความสำเร็จกลับตำแหน่งของไฟล์สุดท้าย (ไบต์) ล้มเหลวไม่มีบวกข้อผิดพลาดจะถูกส่งกลับไหนค่าพารามิเตอร์สามารถ:

    • "ตั้ง": จากจุดเริ่มต้นของไฟล์
    • "เลว": จากตำแหน่งปัจจุบัน [เริ่มต้น]
    • "จบ": เริ่มต้นจากจุดสิ้นสุดของแฟ้ม
    • ชดเชย: เริ่มต้นเป็น 0
    โดยไม่ต้องไฟล์พารามิเตอร์: ขอ () ผลตอบแทนที่ตั้งปัจจุบันไฟล์: แสวงหา ( "การตั้งค่า") มีการกำหนดเป้าหมายไปยังส่วนหัวของแฟ้มแฟ้ม: แสวงหา ( "จบ") เพื่อหาจุดสิ้นสุดของแฟ้มและส่งกลับขนาดของไฟล์
  • ไฟล์: ล้าง (): เขียนบัฟเฟอร์ข้อมูลทั้งหมดไปยังแฟ้ม

  • io.lines (ชื่อไฟล์ตัวเลือก): เปิดโหมดอ่านไฟล์ชื่อไฟล์ที่ระบุไว้และส่งกลับฟังก์ชัน iterator, การโทรแต่ละครั้งจะยื่นบรรทัดเมื่อสิ้นสุดของแฟ้มก็จะกลับมาเป็นศูนย์โดยอัตโนมัติและปิดแฟ้ม
    ถ้าพารามิเตอร์เข็มขัด io.lines () <=> io.input (): สาย (); อุปกรณ์ป้อนข้อมูลเริ่มต้นในการอ่านเนื้อหา แต่ท้ายที่สุดไม่ได้ปิดแฟ้มเช่น

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

ตัวอย่างต่อไปนี้ใช้แสวงหาวิธีการที่จะหาไฟล์สุดท้าย 25 ตำแหน่งและใช้วิธีการอ่าน * พารามิเตอร์อ่านไฟล์ทั้งหมดจากตำแหน่งปัจจุบัน (ตำแหน่งสุดท้าย 25)

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

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

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

ผลของฉันคือการส่งออกที่นี่:

st.lua 文件末尾--test