Lua - File Descriptors
Lua provides I/O library to read and manipulate files. In Lua, file manipulation is done using implicit or explicit file descriptors.
Implicit File Descriptor Style
In implicit file descriptor style, we're using most operations on io table as shown in following code snippets.
Example - Writing file using Implicit file descriptors
Following example shows the usage of implicit file descriptrs to write a file.
main.lua
-- file to write
fileName = "example.txt"
-- Opens a file specified by fileName in write mode
f = io.open(fileName, "w")
-- sets the default output file
io.output(f)
-- write the content
io.write("Welcome to tutorialspoint.com", "\n")
io.write("Simply Easy Learning", "\n")
-- close the File
io.close(f)
-- print the message
print("Content written successfully.")
Output
When the above code is built and executed, it produces the following result −
Content written successfully.
Explanation
Here we're opening a file in write mode using io.open() method.
Then using io.output() method, we're setting the default output file.
All content is written using io.write() method.
Finally we're closing the file handle using io.close(f) method.
Example - Reading file using Implicit file descriptors
Following example shows reading a file using implicit file descriptors.
main.lua
-- file to read fileName = "example.txt" -- Opens a file specified by fileName in read mode f = io.open(fileName, "r") -- sets the default input file io.input(f) -- read mode mode = "*all" -- read a file in given mode (optional) content = io.read (mode) -- print the content print(content) -- close the File io.close(f)
Output
Welcome to tutorialspoint.com Simply Easy Learning
Explanation
Here we're opening a file in read mode using io.open() method.
Then using io.input() method, we're setting the default input file.
mode is set as *all.
All content is read using io.read() method.
Finally we're closing the file handle using io.close(f) method.
Explicit File Descriptor Style
In explicit file descriptor style, we're using most operations on file handle returned by io.open() method as shown in following code snippets.
Example - Writing file using Explicit file descriptors
Following code example shows writing a file using explicit file descriptors.
main.lua
-- file to write
fileName = "example.txt"
-- Opens a file specified by fileName in write mode
f = io.open(fileName, "w")
-- write the content
f:write("Welcome to tutorialspoint.com", "\n")
f:write("Simply Easy Learning", "\n")
-- close the File
f:close()
-- print the message
print("Content written successfully.")
Output
Content written successfully.
Explanation
Here we're opening a file in write mode using io.open() method.
All content is written using f:write() method.
Finally we're closing the file handle using f:close() method.
Example - Reading file using Explicit file descriptors
Following code shows how to read a file using explicit file descriptors.
main.lua
-- file to read fileName = "example.txt" -- Opens a file specified by fileName in read mode f = io.open(fileName, "r") -- read mode mode = "*all" -- read a file in given mode (optional) content = f:read (mode) -- print the content print(content) -- close the File f:close()
Output
When the above code is built and executed, it produces the following result −
Welcome to tutorialspoint.com Simply Easy Learning
Explanation
Here we're opening a file in read mode using io.open() method.
mode is set as *all.
All content is read using f:read() method.
Finally we're closing the file handle using f:close() method.