十六、企業快速開發平臺Spring Cloud+Spring Boot+Mybatis+ElementUI之Lua 檔案 I/O
Lua 檔案 I/O
Lua I/O 庫用於讀取和處理檔案。分為簡單模式(和C一樣)、完全模式。
- 簡單模式(simple model)擁有一個當前輸入檔案和一個當前輸出檔案,並且提供針對這些檔案相關的操作。
- 完全模式(complete model) 使用外部的檔案控制程式碼來實現。它以一種面對物件的形式,將所有的檔案操作定義為檔案控制程式碼的方法
簡單模式在做一些簡單的檔案操作時較為合適。但是在進行一些高階的檔案操作的時候,簡單模式就顯得力不從心。例如同時讀取多個檔案這樣的操作,使用完全模式則較為合適。 需要框架原始碼的朋友可以看我個人簡介聯絡我。
開啟檔案操作語句如下:
file = io.open (filename [, mode])
mode 的值有:
簡單模式
簡單模式使用標準的 I/O 或使用一個當前輸入檔案和一個當前輸出檔案。
以下為 file.lua 檔案程式碼,操作的檔案為test.lua(如果沒有你需要建立該檔案),程式碼如下:
例項
-- 以只讀方式開啟檔案
file = io.open("test.lua", "r")
-- 設定預設輸入檔案為 test.lua
io.input(file)
-- 輸出檔案第一行
print(io.read())
-- 關閉開啟的檔案
io.close(file)
-- 以附加的方式開啟只寫檔案
file = io.open("test.lua", "a")
-- 設定預設輸出檔案為 test.lua
io.output(file)
-- 在檔案最後一行新增 Lua 註釋
io.write("-- test.lua 檔案末尾註釋")
-- 關閉開啟的檔案
io.close(file)
執行以上程式碼,你會發現,輸出了 test.lua 檔案的第一行資訊,並在該檔案最後一行新增了 lua 的註釋。如我這邊輸出的是:
-- test.lua 檔案
在以上例項中我們使用了 io."x" 方法,其中 io.read() 中我們沒有帶引數,引數可以是下表中的一個:
其他的 io 方法有:
- io.tmpfile():返回一個臨時檔案控制程式碼,該檔案以更新模式開啟,程式結束時自動刪除
- io.type(file): 檢測obj是否一個可用的檔案控制程式碼
- io.flush(): 向檔案寫入緩衝中的所有資料
- io.lines(optional file name): 返回一個迭代函式,每次呼叫將獲得檔案中的一行內容,當到檔案尾時,將返回nil,但不關閉檔案
完全模式
通常我們需要在同一時間處理多個檔案。我們需要使用 file:function_name 來代替 io.function_name 方法。以下例項演示瞭如何同時處理同一個檔案:
例項
-- 以只讀方式開啟檔案
file = io.open("test.lua", "r")
-- 輸出檔案第一行
print(file:read())
-- 關閉開啟的檔案
file:close()
-- 以附加的方式開啟只寫檔案
file = io.open("test.lua", "a")
-- 在檔案最後一行新增 Lua 註釋
file:write("--test")
-- 關閉開啟的檔案
file:close()
執行以上程式碼,你會發現,輸出了 test.lua 檔案的第一行資訊,並在該檔案最後一行新增了 lua 的註釋。如我這邊輸出的是:
-- test.lua 檔案
read 的引數與簡單模式一致。
其他方法:
-
file:seek(optional whence, optional offset): 設定和獲取當前檔案位置,成功則返回最終的檔案位置(按位元組),失敗則返回nil加錯誤資訊。引數 whence 值可以是:
- "set": 從檔案頭開始
- "cur": 從當前位置開始[預設]
- "end": 從檔案尾開始
- offset:預設為0
不帶引數file:seek()則返回當前位置,file:seek("set")則定位到檔案頭,file:seek("end")則定位到檔案尾並返回檔案大小
- file:flush(): 向檔案寫入緩衝中的所有資料
-
io.lines(optional file name): 開啟指定的檔案filename為讀模式並返回一個迭代函式,每次呼叫將獲得檔案中的一行內容,當到檔案尾時,將返回nil,並自動關閉檔案。
若不帶引數時io.lines() <=> io.input():lines(); 讀取預設輸入裝置的內容,但結束時不關閉檔案,如:
for line in io.lines("main.lua") do print(line) end
以下例項使用了 seek 方法,定位到檔案倒數第 25 個位置並使用 read 方法的 *a 引數,即從當期位置(倒數第 25 個位置)讀取整個檔案。
例項
-- 以只讀方式開啟檔案
file = io.open("test.lua", "r")
file:seek("end",-25)
print(file:read("*a"))
-- 關閉開啟的檔案
file:close()
我這邊輸出的結果是:
st.lua 檔案末尾--test
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70006413/viewspace-2850083/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 五、企業快速開發平臺Spring Cloud+Spring Boot+Mybatis+ElementUI之Lua 變數CloudSpring BootMyBatisUI變數
- 企業快速開發平臺Spring Cloud+Spring Boot+Mybatis+ElementUICloudSpring BootMyBatisUI
- 企業快速開發平臺Spring Cloud+Spring Boot+Mybatis之Highcharts 基本餅圖CloudSpring BootMyBatis
- (2)java Spring Cloud+Spring boot企業快速開發架構之Spring Cloud版本介紹JavaCloudSpring Boot架構
- 企業生鮮電商O2O平臺開發解決方案
- 提高企業開發效率的優質工具:快速開發平臺
- 低程式碼開發平臺,快速開發企業級系統
- 企業雲盤-檔案管理平臺
- 中小企業需要統一的快速開發平臺嗎?
- 快速構建企業級應用的開發平臺
- LeaRun快速開發平臺,快速開發.net/java專案Java
- 快速開發平臺對中小企業的發展有何助力
- java Spring Cloud企業快速開發架構之SpringCloud-Spring Cloud EurekaJavaSpringCloud架構GC
- java 電子商務雲平臺b2b b2c o2o springmvc+mybatis+spring cloud+spring bootJavaSpringMVCMyBatisCloudSpring Boot
- Python:讀寫檔案(I/O) | 組織檔案Python
- JNPF快速開發平臺-簡單快速高效開發java專案Java
- 8.Spring Cloud 分散式、微服務、雲架構企業快速開發架構之Linux 檔案基本屬性SpringCloud分散式微服務架構Linux
- 9.Spring Cloud 分散式、微服務、雲架構企業快速開發架構之Linux 檔案與目錄管理SpringCloud分散式微服務架構Linux
- 快速開發平臺--企業資訊化的絕佳解決方案
- LeaRun低程式碼平臺 助力中小企業快速開發MES系統
- 企業分散式微服務雲架構快速開發平臺原始碼分散式微服務架構原始碼
- 一起學Scala 檔案 I/O
- I/O流以及檔案的基本操作
- java Spring Cloud企業快速開發架構之Spring Boot Starter的介紹及使用JavaCloud架構Spring Boot
- Web快速開發平臺個人之淺見Web
- SpringCloud企業分散式微服務雲架構快速開發平臺原始碼SpringGCCloud分散式微服務架構原始碼
- LeaRun低程式碼開發平臺 賦能企業快速落地BI大屏
- LeaRun快速開發平臺:企業供應鏈管理系統解決方案
- JAVA漢諾塔遞迴 之SpringCloud企業分散式微服務雲架構快速開發平臺Java遞迴SpringGCCloud分散式微服務架構
- 企業快速開發平臺Spring Cloud實現前後端分離之CAS SSO單點登入服務端環境搭建SpringCloud後端服務端
- Web快速開發平臺,基於二次開發平臺Web
- LR軟體開發平臺:快速建立企業協同辦公解決方案
- 利用軟體開發平臺快速建立企業協同辦公解決方案
- LR低程式碼快速開發平臺 高效調整企業組織架構架構
- 【分散式微服務企業快速架構】SpringCloud分散式、微服務、雲架構快速開發平臺分散式微服務架構SpringGCCloud
- AiDex Sharp快速開發平臺開源AIIDE
- 力軟快速開發平臺:方便快捷的Web開發平臺Web
- Java I/O流 複製檔案速度對比Java