Bài 17 : Lua – Tệp I / O

Bài 17 : Lua – Tệp I / O

Lua – Tệp I / O  Trang trướcTrang tiếp theo   Thư viện I / O được sử dụng để đọc […]

Learn more »

Lua – Tệp I / O


 Trang trướcTrang tiếp theo  

Thư viện I / O được sử dụng để đọc và thao tác các tệp trong Lua. Có hai loại hoạt động tệp trong Lua cụ thể là bộ mô tả tệp ngầm định và bộ mô tả tệp rõ ràng.

Đối với các ví dụ sau, chúng tôi sẽ sử dụng tệp mẫu test.lua như hình dưới đây.

-- sample test.lua -- sample2 test.lua 

Một thao tác mở tệp đơn giản sử dụng câu lệnh sau.

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

Các chế độ tệp khác nhau được liệt kê trong bảng sau.

Sr.No.Chế độ & Mô tả
1“NS”Chế độ chỉ đọc và là chế độ mặc định nơi tệp hiện có được mở.
2“w”Chế độ đã bật ghi ghi đè lên tệp hiện có hoặc tạo tệp mới.
3“Một”Chế độ nối sẽ mở một tệp hiện có hoặc tạo một tệp mới để nối thêm.
4“r +”Chế độ đọc và ghi cho một tệp hiện có.
5“w +”Tất cả dữ liệu hiện có sẽ bị xóa nếu tệp tồn tại hoặc tệp mới được tạo với quyền đọc ghi.
6“a +”Chế độ nối với chế độ đọc được bật để mở tệp hiện có hoặc tạo tệp mới.
Sr.No.Mode & Description
1“r”Read-only mode and is the default mode where an existing file is opened.
2“w”Write enabled mode that overwrites the existing file or creates a new file.
3“a”Append mode that opens an existing file or creates a new file for appending.
4“r+”Read and write mode for an existing file.
5“w+”All existing data is removed if file exists or new file is created with read write permissions.
6“a+”Append mode with read mode enabled that opens an existing file or creates a new file.

Trình mô tả tệp ngầm định

Các bộ mô tả tệp ngầm định sử dụng các chế độ đầu vào / đầu ra tiêu chuẩn hoặc sử dụng một tệp đầu vào và đầu ra duy nhất. Dưới đây là một ví dụ về cách sử dụng bộ mô tả tệp ngầm định.

-- Opens a file in read file = io.open("test.lua", "r")  -- sets the default input file as test.lua io.input(file)  -- prints the first line of the file print(io.read())  -- closes the open file io.close(file)  -- Opens a file in append mode file = io.open("test.lua", "a")  -- sets the default output file as test.lua io.output(file)  -- appends a word test to the last line of the file io.write("-- End of the test.lua file")  -- closes the open file io.close(file)

Khi bạn chạy chương trình, bạn sẽ nhận được đầu ra của dòng đầu tiên của tệp test.lua. Đối với chương trình của chúng tôi, chúng tôi nhận được kết quả sau.

-- Sample test.lua 

Đây là dòng đầu tiên của câu lệnh trong tệp test.lua cho chúng tôi. Ngoài ra, dòng “- End of the test.lua file” sẽ được thêm vào dòng cuối cùng của mã test.lua.

Trong ví dụ trên, bạn có thể thấy cách các bộ mô tả ngầm hoạt động với hệ thống tệp bằng các phương thức io. “X”. Ví dụ trên sử dụng io.read () mà không có tham số tùy chọn. Tham số tùy chọn có thể là bất kỳ thông số nào sau đây.

Sr.No.Chế độ & Mô tả
1“*n”Đọc từ vị trí tệp hiện tại và trả về một số nếu tồn tại ở vị trí tệp hoặc trả về nil.
2“*Một”Trả về tất cả nội dung của tệp từ vị trí tệp hiện tại.
3“* l”Đọc dòng từ vị trí tệp hiện tại và di chuyển vị trí tệp sang dòng tiếp theo.
4con sốĐọc số byte được chỉ định trong hàm.
Sr.No.Mode & Description
1“*n”Reads from the current file position and returns a number if exists at the file position or returns nil.
2“*a”Returns all the contents of file from the current file position.
3“*l”Reads the line from the current file position, and moves file position to next line.
4numberReads number of bytes specified in the function.

Các phương thức I / O phổ biến khác bao gồm,

  • io.tmpfile () – Trả về một tệp tạm thời để đọc và ghi sẽ bị xóa khi chương trình thoát.
  • io.type (tệp) – Trả về tệp, tệp đã đóng hay nil dựa trên tệp đầu vào.
  • io.flush () – Xóa bộ đệm đầu ra mặc định.
  • io.lines (tên tệp tùy chọn) – Cung cấp trình lặp vòng lặp chung cho vòng lặp lặp qua tệp và đóng tệp cuối cùng, trong trường hợp tên tệp được cung cấp hoặc tệp mặc định được sử dụng và không được đóng ở cuối vòng lặp .

Trình mô tả tệp rõ ràng

Chúng tôi thường sử dụng bộ mô tả tệp rõ ràng cho phép chúng tôi thao tác nhiều tệp cùng một lúc. Các chức năng này khá giống với các bộ mô tả tệp ngầm định. Ở đây, chúng tôi sử dụng tệp: function_name thay vì io. functions_name. Dưới đây là ví dụ về phiên bản tệp của cùng một ví dụ về trình mô tả tệp ngầm định.

-- Opens a file in read mode file = io.open("test.lua", "r")  -- prints the first line of the file print(file:read())  -- closes the opened file file:close()  -- Opens a file in append mode file = io.open("test.lua", "a")  -- appends a word test to the last line of the file file:write("--test")  -- closes the open file file:close()

Khi bạn chạy chương trình, bạn sẽ nhận được một kết quả tương tự như ví dụ về bộ mô tả ngầm định.

-- Sample test.lua 

Tất cả các chế độ mở tệp và tham số để đọc cho các bộ mô tả bên ngoài đều giống như các bộ mô tả tệp ngầm định.

Các phương pháp tệp phổ biến khác bao gồm,

  • file: seek (thời điểm tùy chọn, độ lệch tùy chọn) – Tham số thời điểm là “set”, “cur” hoặc “end”. Đặt con trỏ tệp mới với vị trí tệp được cập nhật từ đầu tệp. Các hiệu số được dựa trên 0 trong chức năng này. Độ lệch được đo từ đầu tệp nếu đối số đầu tiên là “set”; từ vị trí hiện tại trong tệp nếu nó là “cur”; hoặc từ cuối tệp nếu nó là “kết thúc”. Các giá trị đối số mặc định là “cur” và 0, do đó, vị trí tệp hiện tại có thể nhận được bằng cách gọi hàm này mà không có đối số.
  • file: flush () – Xóa bộ đệm đầu ra mặc định.
  • io.lines (tên tệp tùy chọn) – Cung cấp trình lặp vòng lặp chung cho vòng lặp lặp qua tệp và đóng tệp cuối cùng, trong trường hợp tên tệp được cung cấp hoặc tệp mặc định được sử dụng và không được đóng ở cuối vòng lặp .

Dưới đây là một ví dụ để sử dụng phương pháp tìm kiếm. Nó đặt con trỏ khỏi 25 vị trí trước khi kết thúc tệp. Chức năng đọc in phần còn lại của tệp từ vị trí tìm kiếm.

-- Opens a file in read file = io.open("test.lua", "r")  file:seek("end",-25) print(file:read("*a"))  -- closes the opened file file:close()

Bạn sẽ nhận được một số đầu ra tương tự như sau.

sample2 test.lua --test 

Bạn có thể chơi xung quanh tất cả các chế độ và thông số khác nhau để biết toàn bộ khả năng hoạt động của tệp Lua.


Lượt xem : 240

Integrations
Users

Share Profile

Anyone at KeenThemes can view
Anyone with link can edit

Give Award

Anyone at KeenThemes can view
Anyone with link can edit

Report User

Let us know why you’re reporing this person
Don't worry, your report is completely anonymous; the person you're
reporting will not be informed that you've submitted it