標籤:io os 使用 for 檔案 資料 c line ad
標準庫 - 輸入輸出處理(input and output facilities)
責任編輯:cynthia來自ITPUB論壇
2008-02-18 文本Tag: Lua
【IT168 技術文檔】I/O庫提供兩種不同的方式進行檔案處理
1、io表調用方式:使用io表,io.open將返回指定檔案的描述,並且所有的操作將圍繞這個檔案描述
io表同樣提供三種預定義的檔案描述io.stdin,io.stdout,io.stderr
2、檔案控制代碼直接調用方式,即使用file:XXX()函數方式進行操作,其中file為io.open()返回的檔案控制代碼
多數I/O函數調用失敗時返回nil加錯誤資訊,有些函數成功時返回nil
1、io.close ([file])
功能:相當於file:close(),關閉預設的輸出檔案
2、io.flush ()
功能:相當於file:flush(),輸出所有緩衝中的內容到預設輸出檔案
3、io.lines ([filename])
功能:開啟指定的檔案filename為讀模式並返回一個迭代函數,每次調用將獲得檔案中的一行內容,當到檔案尾時,將返回nil,並自動關閉檔案
若不帶參數時io.lines() <=> io.input():lines(); 讀取預設輸入裝置的內容,但結束時不關閉檔案
如:for line in io.lines("main.lua") do
print(line)
end
4、io.open (filename [, mode])
功能:按指定的模式開啟一個檔案,成功則返迴文件控制代碼,失敗則返回nil+錯誤資訊
mode:
"r": 讀模式 (預設);
"w": 寫入模式;
"a": 添加模式;
"r+": 更新模式,所有之前的資料將被儲存
"w+": 更新模式,所有之前的資料將被清除
"a+": 添加更新模式,所有之前的資料將被儲存,只允許在檔案尾進行添加
"b": 某些系統支援二進位方式
5、io.output ([file])
功能:相當於io.input,但操作在預設輸出檔案上
6、io.popen ([prog [, mode]])
功能:開始程式prog於額外的進程,並返回用於prog的檔案控制代碼(並不支援所有的系統平台)
7、io.read (...)
功能:相當於io.input():read
8、io.tmpfile ()
功能:返回一個臨時檔案控制代碼,該檔案以更新模式開啟,程式結束時自動刪除
9、io.type (obj)
功能:檢測obj是否一個可用的檔案控制代碼
返回:
"file":為一個開啟的檔案控制代碼
"closed file":為一個已關閉的檔案控制代碼
nil:表示obj不是一個檔案控制代碼
10、io.write (...)
功能:相當於io.output():write
11、file:close()
功能:關閉檔案
註:當檔案控制代碼被垃圾收集後,檔案將自動關閉。控制代碼將變為一個不可預知的值
12、file:flush()
功能:向檔案寫入緩衝中的所有資料
13、file:lines()
功能:返回一個迭代函數,每次調用將獲得檔案中的一行內容,當到檔案尾時,將返回nil,但不關閉檔案
如:for line in file:lines() do body end
14、file:read(...)
功能:按指定的格式讀取一個檔案,按每個格式函數將返回一個字串或數字,如果不能正確讀取將返回nil,若沒有指定格式將指預設按行方式進行讀取
格式:
"*n": 讀取一個數字
"*a": 從當前位置讀取整個檔案,若為檔案尾,則返回空字串
"*l": [預設]讀取下一行的內容,若為檔案尾,則返回nil
number: 讀取指定位元組數的字元,若為檔案尾,則返回nil;如果number為0則返回空字串,若為檔案尾,則返回nil;
15、file:seek([whence][,offset])
功能:設定和擷取當前檔案位置,成功則返回最終的檔案位置(按位元組),失敗則返回nil加錯誤資訊
參數
whence:
"set": 從檔案頭開始
"cur": 從當前位置開始[預設]
"end": 從檔案尾開始
offset:預設為0
不帶參數file:seek()則返回當前位置,file:seek("set")則定位到檔案頭,file:seek("end")則定位到檔案尾並返迴文件大小
16、file:setvbuf(mode,[,size])
功能:設定輸出檔案的緩衝模式
參數
mode:
"no": 沒有緩衝,即直接輸出
"full": 全緩衝,即當緩衝滿後才進行輸出操作(也可調用flush馬上輸出)
"line": 以行為單位,進行輸出(多用於終端裝置)
最後兩種模式,size可以指定緩衝的大小(按位元組),忽略size將自動調整為最佳的大小
17、file:write(...)
功能:按指定的參數格式輸出檔案內容,參數必須為字元或數字,若要輸出其它值,則需通過tostring或string.format進行轉換
標準庫 - 輸入輸出處理(input and output facilities) lua