ยื่น 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