打开文件模式字符串 w+

我知道 io.open(file, "w") 做什么,它表示写入。但我遇到了 io.open(file, "w+"),不知道 "w+" 做什么?

点赞
用户1009479
用户1009479

从参考手册 io.open 中,

mode 字符串可以是以下任意一种:

  • "r": 读取模式(默认的);
  • "w": 写入模式;
  • "a": 追加模式;
  • "r+": 更新模式,所有先前的数据都将被保留;
  • "w+": 更新模式,所有先前的数据都将被清除;
  • "a+": 追加更新模式,先前的数据将被保留,只允许在文件末尾进行写入。

更新模式 意味着,关联文件上既可以进行输入也可以进行输出。

2014-09-14 07:12:35
用户1978448
用户1978448

我在运行OpenWRT上的Lua 5.1中进行了测试,并发现:

file=io.open("/usr/share/result","w")

file=io.open("/usr/share/result","w+")

的效果是一样的,都会清除文件的内容并重新写入。

当我尝试执行以下代码时:

file=io.open("/usr/share/result","a")

文件将被追加,每次运行代码时,文件都会变得越来越长。

所以我认为它们没有区别。

2015-07-03 08:15:26
用户7596196
用户7596196

io.open 函数仅仅使用了 C 语言中的 fopen。你可以查看 C 语言中 fopen 的手册

  • w:将文件截断为零长度或创建文本文件进行写入。文件位置指针位于文件开头。
  • w+:除了返回的文件句柄用于读取之外,它与 w 相同。
2017-02-21 02:59:40