前言#
不知大家有沒有這種情況暑劝,拿到一個(gè)自稱是文件描述符的變量,你對(duì)他產(chǎn)生了懷疑颗搂,比如說你認(rèn)為他根本不是個(gè)文件描述符担猛,或者說這個(gè)文件描述符已經(jīng)關(guān)閉了,而這種情況是確實(shí)存在的丢氢。假設(shè)一個(gè)文件描述符已經(jīng)關(guān)閉了傅联,然后我們?cè)俅问褂脮r(shí),程序就會(huì)發(fā)生錯(cuò)誤并給出警告卖丸,相信看過之前的例子大家都見到過這種情況纺且,那么今天這個(gè)函數(shù)就是處理這個(gè)問題盏道,來避免程序出錯(cuò)的情況稍浆。
內(nèi)容#
io.type()##
- 原型:io.type (obj)
- 解釋:檢測(cè)一個(gè)文件描述符
obj
是否有效,假如obj
是一個(gè)打開的文件描述符則會(huì)返回字符串"file"
猜嘱,如果obj
是一個(gè)關(guān)閉的文件描述符則會(huì)返回字符串"closed file"
衅枫,而當(dāng)obj
是一個(gè)無效的文件描述符時(shí)則會(huì)返回結(jié)果nil
。
Usage##
- 首先我們新建一個(gè)文件朗伶,將文件命名為typetest.lua然后編寫如下代碼:
-- 打開文件
local myfile = io.open("iotypeest.txt", "w")
if nil == myfile then
print("open file iotypeest.txt fail")
end
print("\nafter open file:")
print("myfile handle status = "..io.type(myfile))
-- 關(guān)閉文件
myfile:close()
print("\nafter close file:")
print("myfile handle status = "..io.type(myfile))
-- 隨便輸入一個(gè)文件名
print("\nuse a error file:")
print("error file handle status = "..(io.type(errorfile) or "nil"))
- 運(yùn)行結(jié)果
總結(jié)#
- 使用文件描述符之前最好使用
io.type()
檢測(cè)一下描述符的有效性弦撩。 - 注意這個(gè)函數(shù)沒有描述符顯示使用的方法,只能把文件描述符作為參數(shù)傳遞進(jìn)去论皆。