I/O庫為文件操作提供兩種模式。簡單模式(simple model)擁有一個當前輸入文件和一個當前輸出文件,并且提供針對這些文件相關的操作。完全模式(complete model)使用外部的文件句柄來實現。
## 簡單模式
I/O庫將當前輸入文件作為標準輸入(stdin),將當前輸出文件作為標準輸出(stdout)。這樣當我們執行io.read,就是在標準輸入中讀取一行。
寫操作較讀操作簡單,我們先從寫操作入手。
下面這個例子里函數io.write獲取任意數目的字符串參數,接著將它們寫到當前的輸出文件。
~~~
local t = io.write("sin (3) = ", math.sin(3), "\n")
--> sin (3) = 0.1411200080598672
print("hello", "Lua"); print("Hi")
-->hello Lua
-->Hi
~~~
注:Write函數與print函數不同在于,write不附加任何額外的字符到輸出中去,例如制表符,換行符等等。還有write函數是使用當前輸出文件,而print始終使用標準輸出。另外print函數會自動調用參數的tostring方法,所以可以顯示出表(tables)函數(functions)和nil。
read函數:從當前輸入文件讀取串,由它的參數控制讀取的內容:

例子:
~~~
--io.read 從標準輸入流中獲得,默認設置下,就是你的屏幕輸入
t = io.read("*all")
t = string.gsub(t, ...) -- do the job
io.write(t) -- write the
~~~
提示:若使用luaEditor編輯器,估計無法在屏幕輸入。
## 完全模式
完全模式的核心在于文件句柄(file handle)。該結構類似于C語言中的文件流(FILE*),其呈現了一個打開的文件以及當前存取位置。打開一個文件的函數是io.open。它模仿C語言中的fopen函數,同樣需要打開文件的文件名參數,打開模式的字符串參數:

例子:
~~~
--讀操作
file = io.open("testRead.txt", "r")
for line in file:lines() do
print(line)
end
file:close()
--寫操作
file = io.open("testRead.txt","a+")
file:write("\nhello")
file:close()
~~~
素材:

內容:

運行結果:

文件內容:

- 前言
- lua學習筆記之一(C/C++程序員的Lua快速入門[初階話題])
- lua學習筆記之二(C/C++程序員的Lua快速入門[進階話題])
- lua學習筆記之三(C/C++程序員的Lua快速入門[高階話題])
- lua學習筆記之四(Lua中的基本函數庫)
- lua學習筆記之五(Lua中的數學庫)
- Lua中的table函數庫
- Lua中的常用操作系統庫
- LUA string庫
- LUA IO庫
- VS2010編譯Lua程序(lua-5.2.3)
- Lua中調用C函數(lua-5.2.3)
- Lua 常用數據結構
- lua 如何輸出樹狀結構的table?
- Lua中的元表與元方法
- lua 函數回調技巧
- Cocos2d-x使用Luajit實現加密
- Lua中的模塊與module函數
- 我所理解lua 語言中的點、冒號與self
- Lua代碼編寫規范