如何在创建之前保证文件不存在?

时间:2015-09-27 06:59:42

标签: node.js fs

fs.exists现在已被弃用,原因是我应该尝试打开文件并捕获错误,以确保在检查和打开之间无法删除文件。但是,如果我需要创建一个新文件而不是打开现有文件,在创建它之前如何保证没有文件?

3 个答案:

答案 0 :(得分:1)

你不能。但是,您可以创建一个新文件打开现有文件:

fs.open("/path", "a+", function(err, data){ // open for reading and appending
    if(err) return handleError(err);
    // work with file here, if file does not exist it will be created
});

或者,使用"ax+"打开它,如果它已经存在则会出错,让您处理错误。

答案 1 :(得分:0)

module.exports = fs.existsSync || function existsSync(filePath){
  try{
    fs.statSync(filePath);
  }catch(err){
    if(err.code == 'ENOENT') return false;
  }
  return true;
};

http://i.imgur.com/zNIyhfg.png

答案 2 :(得分:0)

https://stackoverflow.com/a/31545073/2435443

fs = require('fs') ;
var path = 'sth' ;
fs.stat(path, function(err, stat) {
    if (err) {
        if ('ENOENT' == err.code) {
            //file did'nt exist so for example send 404 to client
        } else {
            //it is a server error so for example send 500 to client
        }
    } else {
        //every thing was ok so for example you can read it and send it to client
    }
} );