Skip to content

Latest commit

 

History

History
32 lines (32 loc) · 1.83 KB

chapter7.md

File metadata and controls

32 lines (32 loc) · 1.83 KB

7 输入输出

  • 简单I/O模型
    • io.input
    • io.output
    • io.write 可以读取任意数量的字符串(或数字)并将其写入当前输入流。
    • io.read 可以从当前输入流中读取字符串,其参数决定了要读取的数据:
      • a 读取整个文件
      • l 读取下一行(丢弃换行符)
      • L 读取下一行(保留换行符)
      • n 读取一个数值
      • num 以字符串读取 num 个字符
      • io.read(0) 是一个特例,它常用于测试是否到达了文件末尾。如果仍然有数据可供读取,它会返回一个空字符串;否则,则返回nil。
  • 完整I/O模型
    • io.open 打开一个文件
    • I/O库提供了三个预定义的句柄:
      • io.stdin
      • io.stdout
      • io.stderr
    • 除了函数io.read外,还可以用函数io.lines从流中读取内容。
  • 其他文件操作
    • 函数 io.tmpfile 返回一个临时文件的句柄,该句柄是以读/写模式打开的。当程序运行结束后,该临时文件会被自动移除(删除)。
    • 函数 flush 将所有缓冲数据写入文件。
    • 函数 setvbuf 用于设置流的缓冲模式。
    • 函数 seek 用来获取和设置文件的当前位置。
    • 函数 os.rename 用于文件重命名。
    • 函数 os.remove 用于移除(删除)文件。
  • 其他系统调用
    • 函数 os.exit 用于终止程序的执行。
    • 函数 os.getenv 用于获取某个环境变量。
  • 运行系统命令
    • 函数 os.execute 用于运行系统命令,它等价于C语言中的函数 system。该函数的参数表示待执行命令的字符串,返回值为命令运行结束后的状态。
    • 函数 io.popen 运行一条系统命令,但该函数还可以重定向命令的输入/输出,从而使得程序可以向命令中写入或者从命令中的输出中读取。