如何保证文件在创建前不存在?
How to guarantee non-existance of a file before creating?
fs.exists
现在已被弃用,原因是我应该尝试打开文件并捕获错误,以确保在检查和打开之间无法删除文件。但是如果我需要创建一个新文件而不是打开一个现有文件,我如何保证在我尝试创建之前没有文件?
你不能。但是,您可以创建一个新文件 或 打开一个现有文件(如果存在):
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+"
打开它,如果它已经存在就会出错,让你处理错误。
module.exports = fs.existsSync || function existsSync(filePath){
try{
fs.statSync(filePath);
}catch(err){
if(err.code == 'ENOENT') return false;
}
return true;
};
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
}
} );
fs.exists
现在已被弃用,原因是我应该尝试打开文件并捕获错误,以确保在检查和打开之间无法删除文件。但是如果我需要创建一个新文件而不是打开一个现有文件,我如何保证在我尝试创建之前没有文件?
你不能。但是,您可以创建一个新文件 或 打开一个现有文件(如果存在):
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+"
打开它,如果它已经存在就会出错,让你处理错误。
module.exports = fs.existsSync || function existsSync(filePath){
try{
fs.statSync(filePath);
}catch(err){
if(err.code == 'ENOENT') return false;
}
return true;
};
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
}
} );