欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

lua文件操作詳解

 更新時間:2016年03月13日 16:21:32   投稿:hebedich  
Lua中關于文件處理操作是本文要介紹的內容,主要是來了解并學習lua中文件的相關操作,具體內容的實現(xiàn)來看本文詳解。

I/O庫提供兩種不同的方式進行文件處理:

io表調用方式

使用io表,io.open將返回指定文件的描述,并且所有的操作將圍繞這個文件描述。io表同樣提供三種預定義的文件描述io.stdin,io.stdout,io.stderr

文件句柄直接調用方式
即使用file:XXX()函數方式進行操作,其中file為io.open()返回的文件句柄。多數I/O函數調用失敗時返回nil加錯誤信息,有些函數成功時返回nil

IO
io.close ([file])
io.flush ()
相當于file:flush(),輸出所有緩沖中的內容到默認輸出文件

io.lines ([filename])
打開指定的文件filename為讀模式并返回一個迭代函數,每次調用將獲得文件中的一行內容,當到文件尾時,將返回nil,并自動關閉文件,若不帶參數時io.lines() <=> io.input():lines(); 讀取默認輸入設備的內容,但結束時不關閉文件

for line in io.lines("main.lua") do
  print(line)
end

io.open (filename [, mode])
mode:

  "r": 讀模式 (默認);

  "w": 寫模式;

  "a": 添加模式;

  "r+": 更新模式,所有之前的數據將被保存

  "w+": 更新模式,所有之前的數據將被清除

  "a+": 添加更新模式,所有之前的數據將被保存,只允許在文件尾進行添加

  "b": 某些系統(tǒng)支持二進制方式

io.read (...)
io.type (obj)
檢測obj是否一個可用的文件句柄

返回:

  "file":為一個打開的文件句柄

  "closed file":為一個已關閉的文件句柄

  nil:表示obj不是一個文件句柄

io.write (...)
相當于io.output():write

File

file:close()
當文件句柄被垃圾收集后,文件將自動關閉。句柄將變?yōu)橐粋€不可預知的值

file:flush()
向文件寫入緩沖中的所有數據

file:lines()
返回一個迭代函數,每次調用將獲得文件中的一行內容,當到文件尾時,將返回nil,但不關閉文件

for line in file:lines() do body end

file:read(...)

按指定的格式讀取一個文件,按每個格式函數將返回一個字串或數字,如果不能正確讀取將返回nil,若沒有指定格式將指默認按行方式進行讀取

格式:

  "n": 讀取一個數字 ("number")

  "a": 從當前位置讀取整個文件,若為文件尾,則返回空字串 ("all")

  "l": [默認]讀取下一行的內容,若為文件尾,則返回nil ("line")

  number: 讀取指定字節(jié)數的字符,若為文件尾,則返回nil;如果number為0則返回空字串,若為文件尾,則返回nil;

file:seek(whence)

設置和獲取當前文件位置,成功則返回最終的文件位置(按字節(jié)),失敗則返回nil加錯誤信息

參數

whence:

  "set": 從文件頭開始

  "cur": 從當前位置開始[默認]

  "end": 從文件尾開始

offset:默認為0

  不帶參數file:seek()則返回當前位置,file:seek("set")則定位到文件頭,file:seek("end")則定位到文件尾并返回文件大小

file:write(...)

按指定的參數格式輸出文件內容,參數必須為字符或數字,若要輸出其它值,則需通過tostring或string.format進行轉換

實例
讀取文件所有內容

function readfile(path)
  local file = io.open(path, "r")
  if file then
    local content = file:read("*a")
    io.close(file)
    return content
  end
  return nil
end

寫入內容到文件

function writefile(path, content, mode)
  mode = mode or "w+b"
  local file = io.open(path, mode)
  if file then
    if file:write(content) == nil then return false end
    io.close(file)
    return true
  else
    return false
  end
end

文件大小

-- @return : 文件字節(jié)數
function filesize(path)
  local size = false
  local file = io.open(path, "r")
  if file then
    local current = file:seek()
    size = file:seek("end")
    file:seek("set", current)
    io.close(file)
  end
  return size
end

文件是否存在

function fileExists(path)
  local file = io.open(path, "r")
  if file then
    io.close(file)
    return true
  end
  return false
end

相關文章

  • Lua中使用元表(metatable)執(zhí)行算術類元方法實例

    Lua中使用元表(metatable)執(zhí)行算術類元方法實例

    這篇文章主要介紹了Lua中使用元表(metatable)執(zhí)行算術類元方法實例,本文給出了加法、減法、乘法、除法、相反數、取模等內容,需要的朋友可以參考下
    2014-09-09
  • Lua教程(九):元表與元方法詳解

    Lua教程(九):元表與元方法詳解

    這篇文章主要介紹了Lua教程(九):元表與元方法詳解,本文講解了算術類的元方法、關系類的元方法、庫定義的元方法、table訪問的元方法等內容,需要的朋友可以參考下
    2015-04-04
  • Lua中三種循環(huán)語句的使用講解

    Lua中三種循環(huán)語句的使用講解

    今天小編就為大家分享一篇關于Lua中三種循環(huán)語句的使用講解,小編覺得內容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2018-12-12
  • Lua中的for循環(huán)和迭代器的秘密探究

    Lua中的for循環(huán)和迭代器的秘密探究

    這篇文章主要介紹了Lua中的for循環(huán)和迭代器的秘密探究,本文講解了返回兩個值的迭代器、for .. in .. do的真面目、迭代器函數、恒定狀態(tài)、控制變量初值等內容,需要的朋友可以參考下
    2014-09-09
  • 在Lua程序中使用SQLite的教程

    在Lua程序中使用SQLite的教程

    這篇文章主要介紹了在Lua程序中使用SQLite的教程,包括建立連接到基本的查詢等一些操作,需要的朋友可以參考下
    2015-05-05
  • Lua和Nginx結合使用的超級指南

    Lua和Nginx結合使用的超級指南

    這篇文章主要介紹了Lua和Nginx結合使用的指南,從數據轉換到API等各個方面均有涉及,超推薦!需要的朋友可以參考下
    2015-06-06
  • Lua字符串庫中的幾個重點函數介紹

    Lua字符串庫中的幾個重點函數介紹

    這篇文章主要介紹了Lua字符串庫中的幾個重點函數介紹,本文講解了幾個最常用的強大的字符串函數find、match、gsub、gmatch,需要的朋友可以參考下
    2014-09-09
  • 深入談談lua中神奇的table

    深入談談lua中神奇的table

    table 在lua中是一個非常常用的數據結構,可以用來存放各種類型的元素,下面這篇文章就來給大家介紹了關于lua中神奇的table的相關資料,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考借鑒,下面來一起看看吧
    2018-07-07
  • Lua的table庫函數insert、remove、concat、sort詳細介紹

    Lua的table庫函數insert、remove、concat、sort詳細介紹

    這篇文章主要介紹了Lua的table庫函數insert、remove、concat、sort詳細介紹,本文分別給出了這幾個函數的使用實例,需要的朋友可以參考下
    2015-04-04
  • Lua中的閉包小結

    Lua中的閉包小結

    這篇文章主要介紹了Lua中的閉包小結,本文對閉包的概念做了講解,同時給出閉包代碼示例,需要的朋友可以參考下
    2014-09-09

最新評論