TheGreat Mr.BullFrof
TheGreat Mr.BullFrof

Reputation: 53

Lua is refusing to read from a file

I typed up my code not expecting it to work first try, and of course it didn't. I kept tweaking it for hours on end, but I kept getting the same result until I made as simple as possible.

local file = io.open("File_Name", "r")
io.output(file)

local test = io.read('*all')

io.close(file)
print(test)

After getting (no return) from this, I've decided to take a break and let someone else answer my question.

Upvotes: 3

Views: 351

Answers (1)

Piglet
Piglet

Reputation: 28964

The problem with your code is that you're trying to read from whatever is defined as your input file. You only opened a file, but you didn't tell Lua to use it as the input file, so io.read won't read from the opened file, yet.

local file = io.open(filename, "r")
local test = file:read("a")
io.close(file)
print(test)

Alternatively:

local file = io.open(filename, "r")
io.input(file)
local test = io.read("a")
io.close(file)
print(test)

or

local file = io.open(filename, "r")    
local test = io.input(file):read("a")
io.close(file)
print(test)

Of course you should check wether opening the file succeeded befor using the file handle.

Depending on your Lua version the read format is either *a or a. I cannot remember if both is ok in all versions. At least that's what the manual says.

Upvotes: 2

Related Questions