文件在节点js中使用之前正在删除

时间:2014-09-19 10:41:22

标签: javascript node.js

我是节点js的新手,我正在尝试执行以下操作:

function createPasswordfile(content)
{
    fs.writeFile(passwordFileName,content, function(err) {
        if(err) {
            console.log("Failed on creating the file " + err)
        } 
    });

    fs.chmodSync(passwordFileName, '400');
}

function deletePasswordFile()
{
    fs.chmodSync(passwordFileName, '777');
    fs.unlink(passwordFileName,function (err) {
      if (err) throw err;
      console.log('successfully deleted');
    });
}

并且有三个语句称为这些函数:

createPasswordfile(password)
someOtherFunction() //which needs the created password file
deletePasswordFile()

我遇到的问题是当我添加deletePasswordFile()方法调用时,我得到这样的错误:

Failed on creating the file Error: EACCES, open 'password.txt'
successfully deleted

由于它是非阻塞的,我想deletePasswordFile函数会在其他函数使用它之前删除该文件。

如果deletePasswordFile已被注释掉,那么情况正常。

我该如何防止这种情况?

1 个答案:

答案 0 :(得分:1)

writeFile是异步的,因此当您尝试删除文件时,文件仍然可以写入。

尝试更改为writeFileSync

fs.writeFileSync(passwordFileName, content);