Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/lua/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Io 打开文件模式字符串w+;_Io_Lua - Fatal编程技术网

Io 打开文件模式字符串w+;

Io 打开文件模式字符串w+;,io,lua,Io,Lua,我知道io.open(file,“w”)的作用,它表示写入。但是,我遇到了io.open(文件,“w+”)并且找不到“w+”的作用 参考手册中的 模式字符串可以是以下任意一种: “r”:读取模式(默认) “w”:写入模式 “a”:附加模式 “r+”:更新模式,保留所有以前的数据 “w+”:更新模式,删除所有以前的数据 “a+”:追加更新模式,保留以前的数据,只允许在文件末尾写入 这里的更新模式意味着,输入和输出都可以在 相关文件。我在OpenWRT上运行的Lua5.1中测试了这个,发现 fi

我知道io.open(file,“w”)的作用,它表示写入。但是,我遇到了
io.open(文件,“w+”)
并且找不到“w+”的作用

参考手册中的

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

  • “r”:读取模式(默认)
  • “w”:写入模式
  • “a”:附加模式
  • “r+”:更新模式,保留所有以前的数据
  • “w+”:更新模式,删除所有以前的数据
  • “a+”:追加更新模式,保留以前的数据,只允许在文件末尾写入
这里的更新模式意味着,输入和输出都可以在
相关文件。

我在OpenWRT上运行的Lua5.1中测试了这个,发现

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

file=io.open("/usr/share/result","w+")
这两个操作都删除了文件的当前内容并重新写入

当我试着

file=io.open("/usr/share/result","a")
文件被附加到-每次我的代码运行时,它都变得越来越长


所以我不认为有什么区别。

io.open只使用C的fopen。您可以检查

  • w:将文件截断为零长度或创建用于写入的文本文件。 流位于文件的开头
  • w+:与w相同,除了返回的句柄可用于
    阅读

这并没有回答这个问题——我认为这是一个合理的问题。在大多数语言中,对文件的写入有两种变体——“append”在现有文件的末尾添加额外内容,“write”清空现有文件内容,并从字节号0开始写入。我阅读了手册的这一部分,并在这里寻求对大多数语言的澄清,真的吗?这些模式都在至少c/python/Ruby/Lua……中可用,而其他一些语言以某种封装方式隐含地支持所有这些模式,这是C++/java的情况。您的编辑添加了缺少的关键信息-输入和输出都可以使用w+执行我有一个相同的问题-为什么lua有三种书写模式:“写入”、“附加”和“写入+”?这个答案是错误的。写模式和更新模式的区别在于:使用
“w”
模式,您只能输出到文件,而使用
“w+”
模式,输入和输出都可以执行。顺便提一下,如果
“w”
“w+,您真的认为语言设计者(不仅是Lua,而且是C/Python/Ruby等)会同时保留这两种模式吗
我们真的一样吗?非常感谢,这是最好的解释。