【发布时间】:2016-10-11 18:25:53
【问题描述】:
我正在使用这段代码按需删除文件
{
...
fs.access(path, (err)=> err || fs.unlink(path));
...
}
我收到了这个错误
错误:ENOENT:没有这样的文件或目录,取消链接 'C:\ ...' 在错误(本机)
这对我来说毫无意义,因为我实际上只是在尝试取消链接之前检查了文件是否存在 - 我感觉在幕后发生了一些奇怪的事情,例如文件锁定。
如何纠正这个错误?
另外,在我尝试删除之前,我是否需要自己锁定文件,以保证删除的健壮和安全。每次用户尝试删除他们的文件时,我都不会在那里手动删除文件并重新启动服务器。
【问题讨论】:
-
“我实际上只是在尝试取消链接之前检查了文件是否存在” - 不要那样做,这是不好的做法。不要进行文件存在性检查(出于某种原因,它们已被弃用)。只需取消链接并捕获错误(如果有)。
-
我应该递归地取消链接直到它工作
-
不会发生错误,我很困惑
-
在您进行“存在”检查和调用 unlink 之间的瞬间,由于外部因素,文件可能已经消失。与您的应用程序是否可能无关,它在技术上仍然是可能的。因此,“存在”支票通常毫无价值。简单地做你想做的事情(读取、写入、删除)并在错误发生时处理它们是文件系统交互的唯一有用策略。
-
我应该一直尝试删除直到它删除
标签: node.js file error-handling filestream chmod