zoukankan      html  css  js  c++  java
  • lua文件读写

    lua里的文件读写模型来自C语言,分为完整模型(和C一样)、简单模型。

    1、简单模型

    io.input([file])  设置默认的输入文件,file为文件名(此时会以文本读入)或文件句柄(可以理解为把柄,有了把柄就可以找到文件),返回文件句柄。

    io.output([file])  设置默认的输出文件,参数意义同上。

    io.close([file]) 关闭文件,不带参数关闭默认的文件

    io.read(formats) 读入默认文件,formats取值为"*a"(读入全部)、“*n”(按数字读入)、 "*l"(按行读入,默认方式)、n(即数字,读取n个字符)。

    io.lines([fn]) fn文件名,若无文件,取默认文件,返回一个迭代器,可以用在for循环里。

    io.write(value)向默认文件写入内容。

    io.flush() 把文件缓存里的操作立即作用到默认输出文件。

    例子在最后。

    2、完整模型

    简单模型里只能处理文本类型的文件,在完整模型里可以处理二进制文件。

    处理文件的一般流程为:打开文件,获取文件的句柄;以文件句柄操作文件;关闭文件。

    可以看到完整模型比简单模型复杂点,但优点是功能更强大。

    io.open (fn [, m]) 打开文件,返回文件句柄,fn文件名,m模式有:

    r 以只读方式打开文件,该文件必须存在。

    w 打开只写文件,若文件存在则文件长度清为0,即该文件内容会消失。若文件不存在则建立该文件。

    以附加的方式打开只写文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾,即文件原先的内容会被保留。(EOF符保留)

    r+ 以可读写方式打开文件,该文件必须存在。

    w+ 打开可读写文件,若文件存在则文件长度清为零,即该文件内容会消失。若文件不存在则建立该文件。

    a+ 与a类似,但此文件可读可写

    二进制模式,如果文件是二进制文件,可以加上b

    号表示对文件既可以读也可以写

    以下的file是io.open返回的文件句柄,功能与简单模式类似,不再详述。

    file :close ()

    file :read ( formats )

    file :lines ()

    file :write ( values )

    file :seek ([p] [, of]) 设置文件读写的偏移,p文件偏移起始位置(取值有"set",文件头,此为默认值,"cur"当前位置、"end"文件尾),of偏移量(默认值0,正的表示向前,负的表示向后),返回在文件里新的当前位置。

    file :flush ()

    3、示例

    ------------------简单模型-----------------
    --
    local file1=io.input("1.txt")  --当前目录"1.txt"要存在,不然出错
    local str=io.read("*a")
    print(str)
    --
    local file2=io.output("2.txt") --当前目录"2.txt"不需要存在
    io.write(str)
    io.flush()
    io.close()
    
    --利用这几个函数可以做一个文件复制的函数
    function copy(fileA,fileB)
      local file1=io.input(fileA) 
      if not file1 then print(fileA.."不存在") return end
      local str=io.read("*a")
      local file2=io.output(fileB)
      io.write(str)
      io.flush()
      io.close()  
    end
    
    for line in io.lines("1.txt") do
      print(line)
    end
    ------------------完整模型-----------------
    local f=io.open("3.txt","a+")
    f:write("Happy New Year!")
    f:flush()
    
    f:seek("end",-1) --定位到文件末尾前一个字节
    local str=f:read(1) --读取一个字符
    print(str) --输出"!"
    f:close()

    二进制文件读写,可以参见

    love2d教程22--金庸群侠资源格式解析1

     
     
  • 相关阅读:
    简单的模板解析函数
    HTML通过事件传递参数到js 二 event
    HTML通过事件传递参数到js一
    通过this获取当前点击选项相关数据
    LeetCode 20. 有效的括号(Valid Parentheses)
    LeetCode 459. 重复的子字符串(Repeated Substring Pattern)
    LeetCode 14. 最长公共前缀(Longest Common Prefix)
    LeetCode 168. Excel表列名称(Excel Sheet Column Title)
    LeetCode 171. Excel表列序号(Excel Sheet Column Number) 22
    LeetCode 665. 非递减数列(Non-decreasing Array)
  • 原文地址:https://www.cnblogs.com/xdao/p/lua_file.html
Copyright © 2011-2022 走看看