• Lua-文件操作


    简单模式和完全模式

    • 简单模式(simple model)拥有一个当前输入文件和一个当前输出文件,并且提供针对这些文件相关的操作。
    • 完全模式(complete model) 使用外部的文件句柄来实现。它以一种面对对象的形式,将所有的文件操作定义为文件句柄的方法。

    打开文件

    1
    file = io.open(filename [, mode])

    mode 选项

    模式 简介
    r 只读,文件必须存在。默认。
    w 只写,文件存在,则写入时覆盖原有内容。文件不存在,则创建文件。
    a 附加写入,文件存在,则从文件末尾写入。文件不存在,则创建文件。
    b 二进制模式,与r/w/a结合使用。
    + 表示文件可读写,与r/w/a结合使用。
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    file01 = io.open("test.lua", "r")
    file02 = io.open("test.lua", "rb")
    file03 = io.open("test.lua", "w")
    file04 = io.open("test.lua", "wb")
    file05 = io.open("test.lua", "a")
    file06 = io.open("test.lua", "ab")
    file07 = io.open("test.lua", "r+")
    file08 = io.open("test.lua", "r+b")
    file09 = io.open("test.lua", "w+")
    file10 = io.open("test.lua", "w+b")
    file11 = io.open("test.lua", "a+")
    file12 = io.open("test.lua", "a+b")

    从文件读取数据

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13

    file01 = io.open("test.lua", "r")
    io.input(file01)
    print("简单模式读取的文件内容:n"..io.read())

    -- 完全模式
    file02 = io.open("test.lua", "r")
    print("完全模式读取的文件内容:n"..file02:read())


    -- 关闭文件流
    io.close()
    大专栏  Lua-文件操作ne">file02:close()

    向文件写入数据

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13

    file01 = io.open("test.lua", "a")
    io.output(file01)
    io.write("-- 这是一行简单模式写入的文本。")

    -- 完全模式
    file02 = io.open("test.lua", "a")
    file02:write("-- 这是一行完全模式写入的文本。")


    -- 关闭文件流
    io.close(file01)
    file02:close()

    关闭文件

    1
    2
    3
    4
    5
    6
    7
    8
    9
    file01 = io.open("test.lua", "r")
    io.input(file01)
    file02 = io.open("test.lua", "r")


    io.close(file01)

    -- 完全模式
    file02:close()

    方法

    简单模式,io的方法

    调用方式:io.方法名()。如:io.read()

    1. read()

    输入文件一行数据,并把游标指向下一行开始地址。

    参数:

    参数 说明
    “*l” 读取下一行,在文件尾 (EOF) 处返回 nil。默认。
    “*n” 读取一个数字并返回它。
    “*a” 从当前位置读取整个文件。
    number 返回一个指定字符个数的字符串,或在 EOF 时返回 nil。
    1. tmpfile()

    返回一个临时文件句柄,该文件以更新模式(附加)打开,程序结束时自动删除。

    1. type(file)

    检测file是否一个可用的文件句柄。

    1. flush()

    向文件写入缓冲中的所有数据。

    1. lines(optional filename)

    打开指定的文件filename为只读模式并返回一个迭代函数,每次调用将获得文件中的一行内容,当到文件尾时,将返回nil,并自动关闭文件。

    若不带参数时io.lines() io.input():lines(); 读取默认输入设备的内容,但结束时不关闭文件

    完全模式,文件句柄的方法

    调用方式:文件句柄:方法名()。如:file:read()。

    1. read()

    作用和参数与简单模式一致。

    1. seek(optional whence, optional offset)

    设置和获取当前文件位置,成功则返回最终的文件位置(按字节),失败则返回nil加错误信息。

    参数 whence 取值:

    说明
    “cur” 从当前位置开始。默认
    “set” 从文件头开始
    “end” 从文件尾开始

    offset,偏移量,默认为0。

    不带参数file:seek()则返回当前位置。
    file:seek(“set”)则定位到文件头。
    file:seek(“end”)则定位到文件尾并返回文件大小。

    1. flush()

    向文件写入缓冲中的所有数据。

  • 相关阅读:
    mysql修改数据表名
    HDU 5742 It's All In The Mind (贪心)
    HDU 5752 Sqrt Bo (数论)
    HDU 5753 Permutation Bo (推导 or 打表找规律)
    HDU 5762 Teacher Bo (暴力)
    HDU 5754 Life Winner Bo (博弈)
    CodeForces 455C Civilization (并查集+树的直径)
    CodeForces 455B A Lot of Games (博弈论)
    CodeForces 455A Boredom (DP)
    HDU 4861 Couple doubi (数论 or 打表找规律)
  • 原文地址:https://www.cnblogs.com/lijianming180/p/12371099.html
Copyright © 2020-2023  润新知