lua io庫提供了2種模式來檔案處理
1.簡單模式-所有操作會在2個當前檔案(預設為標準輸入stdin,標準輸出stdout)
2.完全模式-基於檔案控制代碼,功能豐富一點
--接收任意個引數,預設寫到標準輸出stdout
io.write('www', '.','freecls','.','com','\n')
--預設從stdin讀取
local t = io.read('*n')
--'*a' 讀取整個檔案
--'*l' 讀取下一行(不包括換行符)=io.read()
--'*l' 讀取下一行(包括換行符)
--'*n' 讀取乙個數字(非數字開頭返回nil,數字開頭直到讀到非數字)
--num 讀取num個字元
--返回空字元代表還沒到檔案末尾,返回nil代表已到檔案末尾
io.read(0)
io.input---io.input ([file])
--開啟並設定為預設的讀取檔案
--如果提供的是handler,則直接設定
--如果沒提供引數,返回預設讀取檔案
[io.output]---io.output ([file])
--開啟並設定預設的輸出檔案
--其他同上
--小技巧
local tmp = io.input() --儲存當前的輸入檔案控制代碼
io.input('tmp.txt') --開啟新檔案並設定為當前檔案控制代碼
--do something
io.input():close() --關閉檔案
io.input(tmp) --恢復
--迭代一行一行讀取整個檔案
io.lines()
--例子
local lines = {}
for line in io.lines() do lines[#lines + 1] = line end
--排序
table.sort(lines)
--重新寫入
for _, l in ipairs(lines) do io.write(l, "\n") end
io.open--io.open(filename [,mode])
-- r 以唯讀方式開啟檔案,該檔案必須存在。
-- r+ 以可讀寫方式開啟檔案,其他的同上
-- w 開啟只寫檔案,內容清0,不存在建立
-- w+ 讀寫模式開啟,其他同上
-- a 追加只寫模式開啟,不存在則建立
-- a+ 追加讀寫模式開啟,其他同上
-- b 二進位制模式,如果檔案是二進位制檔案
-- + 表示對檔案既可以讀也可以寫
-- 以唯讀方式開啟檔案
local f = io.open("test.lua", "r+")
-- 讀取第一行
file:read()
-- 關閉開啟的檔案
file:close()
-- 寫入內容
file:write("--test")
--定位檔案游標(也就是設定從檔案的**讀取或寫入資料)
file:seek(whence, offset)
--"set": 從檔案頭開始
--"cur": 從當前位置開始[預設]
--"end": 從檔案尾開始
--offset:預設為0
file:seek() --返回當前位置
file:seek("set") --定位到檔案頭
file:seek("end") --定位到檔案尾
file:flush()
--重新整理緩衝區
--一般為了效能考慮,當向檔案寫入一段資料時,不會立刻寫入,而是先
--快取到記憶體緩衝區,然後當滿足某個條件或顯示呼叫file:flush()時
--才會立即把緩衝區的資料寫入檔案
file:setvbuf(mode[, size])
--設定緩衝模式
-- 'no' 不緩衝直接寫入(不推薦,除非在開發除錯階段)
-- 'full' 全緩衝,只有當緩衝區滿了的時候才會立即寫入
-- 'line' 行緩衝,遇到換行符的時候立即寫入
-- 當顯示呼叫file:flush()就會立即寫入
io.popen (prog [, mode])
執行乙個程式並返回檔案控制代碼來讀寫,mode預設為r注意,這個方法不是每個作業系統都支援
本人的是centos7 64位可以用來執行shell命令
local h = io.popen('ls -al /')
local s = h:read("*a")
print(s)
io.type(obj)
用來檢測obj是否為合法的控制代碼,返回io.tmpfile()'file' 代表開啟的檔案控制代碼
'closed file' 代表關閉的檔案控制代碼
'nil' 代表不是檔案控制代碼
開啟乙個臨時檔案並返回控制代碼,程式結束的時候自動刪除
常用技巧 輸入輸出優化 輸入輸出外掛程式
我們知道cin cout是比較慢的,不過它們可以加速。在 中加入這兩句即可 std ios sync with stdio false std cin.tie 0 加速過後cin的速度與scanf的速度近似 當然,加速過後就不要混用print和cout,scanf和cin了。因為不同步,後果會很嚴重...
流類庫與輸入 輸出
流類庫與輸入 輸出 11 1 什麼叫做流?流的提取和插入是指什麼?i o流在c 中起著怎樣的作用?解 流是一種抽象,它負責在資料的生產者和資料的消費者之間建立聯絡,並管理資料的流動,一般意義下的讀操作在流資料抽象中被稱為 從流中 提取,寫操作被稱為 向流中 插入。作業系統是將鍵盤 螢幕 印表機和通訊...
流類庫與輸入 輸出
引用自 i o流的概念 當程式與外界環境進行資訊交換時,存在著兩個物件,乙個是程式中的物件,另乙個是檔案物件,流是一種抽象,它負責在資料的生產者和資料的消費者之間建立連線,並管理資料的流動。程式建立乙個流物件,並指定這個流物件與某個檔案物件建立連線,程式操作流物件,流物件通過檔案系統對所連線的檔案物...