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.

Advertisements