Lua os.remove()

Usage

  • 先是大家新建一个文书命名为removetest.lua编写如下代码:

-- 删除存在的文件
local rm_file = os.remove("remove_test.txt");
print("remove exist file ret:")
print(rm_file)
print("\n")

-- 删除不存在的文件
local rm_notexist_file = os.remove("remove_test2.txt");
print("remove don't exist file ret:")
print(rm_notexist_file)
print("\n")

-- 删除存在的目录
local rm_dir = os.remove("mydir")
print("remove exist dir ret:")
print(rm_dir)
print("\n")

-- 删除不存在的目录
local rm_notexist_dir = os.remove("mydir2")
print("remove don't exist dir ret:")
print(rm_notexist_dir)
print("\n")

-- 终极杀招 调用系统命令删目录
local cmd_rm = os.execute("rd mydir")
print("remove exist dir with sys cmd ret:")
print(cmd_rm)
if cmd_rm == 0 then
    print("remove exist dir with sys cmd success")
end
  • 运转结果:

removefile.png

  • 关于运行结果的思想:

  • 由运行结果的前两组能够观望:当要删除的公文存在时,调用os.remove()会中标删除文件同时重返true,而当要刨除的文件不设有时,函数重回nil那是吻合预期结果的。

  • 由运行结果第3、4组可以观看无论要去除的目录是不是存在,执行函数后均不可能成功删除目录重临nil,那就值得沉思了,明明文档里写了足以去除目录怎么到了那可怜了呢,处于一脸懵逼的自家只可以去查了一下lua的个种种版本的官方文档,结果更懵逼了。

    • 先来探望Lua 5.0,那压根就没提到可以去除目录的事务呀!!!

Deletes the file with the given name. If this function fails, it
returns nil, plus a string describing the error.

- 然后是**Lua 5.1**,确实和我上面的解释是一样的。

Deletes the file or directory with the given name.Directories must be
empty to be removed.If this function fails, it returns nil,plus a
string describing the error.

  • 说到底是完全相同的Lua 5.2、5.3,他仍然提到了“POSIX
    systems”,这自己动用的Windows岂不是没用了。

Deletes the file (or empty directory, on POSIX systems)with the given
name.If this function fails, it returns nil,plus a string
describing the error and the error code.

  • 顺着这么些意识我又看了一下Lua
    5.1本子的源码,调用的是c语言的int remove(char * filename);函数,网上搜了刹那间以此函数的表明为:“filename为要去除的文本名,可以为一目录。即使参数filename
    为一文书,则调用unlink()处理;若参数filename
    为一目录,则调用rmdir()来处理”。但是事实评释那在windows系统上也是不成立的,我在C语言中采纳int remove(char * filename);函数去删除目录,得到的结果是尚未权限,一初阶我信了,然后自己对要去除的文本夹举行了疯狂的权柄修改,末了依旧不能够去除,然后自己就想即使自己自己创立的文书夹,你总该让自身删了吧,于是自己又调用c语言的mkdir()函数来创立了一个文本夹,然后再删除,得到的结果或者不曾权力,本次自己通晓了,在windows系统下int remove(char * filename);本条函数或许就从不删除目录的职能,于是自己安静了,祭出一件宝贝,调用system("rd mydir")函数成功将引得删除,小样,还治不了你了!

前言#

明日来看的那一个函数看似普普通通,但却花了自己许多日子来调节,提前证实一下我利用的lua源代码的本子是5.1.4,版本这一个事物很想得到,明明以此本子很好用的函数,下个版本可能就删除了,很奇怪呢!前几天我们看的这几个函数也和本子有关。

内容#


总结#

  • os.remove(filename)正如他的参数名字同样,删除文件是没难点的,不过删除目录就看景况了。
  • 当碰着函数的运转结果和融洽的预料分裂等时,多去源头找找原因,比如翻翻官方文档。

os.remove()

  • 原型:os.remove (filename)
  • 解释:删除文件或一个空目录,若函数调用退步则返加nil丰盛错误音信。