Answers:
rmFile别名
rm别名(如果它们具有rmdir方法)
fs.unlinkSync()
如果要在删除前检查文件是否存在。因此,请使用fs.stat或fs.statSync(Synchronous)代替fs.exists。因为根据最新的node.js 文档,fs.exists现在已弃用。
例如:-
fs.stat('./server/upload/my.csv', function (err, stats) {
console.log(stats);//here we got all information of file in stats variable
if (err) {
return console.error(err);
}
fs.unlink('./server/upload/my.csv',function(err){
if(err) return console.log(err);
console.log('file deleted successfully');
});
});
fs.unlink,如果文件不存在,ENOENT则回调中将出现错误。尝试取消链接之前无需检查。
fs.unlink在文件不存在时执行删除操作,所以我的看法是在删除文件之前先检查文件。
unlink回调中的ENOENT错误代码即可。如果发生该错误,则该文件不存在。例如,看一下Searene的答案。
我认为您不必检查文件是否存在,fs.unlink将为您检查文件。
fs.unlink('fileToBeRemoved', function(err) {
if(err && err.code == 'ENOENT') {
// file doens't exist
console.info("File doesn't exist, won't remove it.");
} else if (err) {
// other errors, e.g. maybe we don't have enough permission
console.error("Error occurred while trying to remove file");
} else {
console.info(`removed`);
}
});
这是我为此目的制作的一小段代码,
var fs = require('fs');
var gutil = require('gulp-util');
fs.exists('./www/index.html', function(exists) {
if(exists) {
//Show in green
console.log(gutil.colors.green('File exists. Deleting now ...'));
fs.unlink('./www/index.html');
} else {
//Show in red
console.log(gutil.colors.red('File not found, so not deleting.'));
}
});
fs.exists和删除之后,如果文件被其他人删除,该fs.unlink怎么办?可能会发生。
unlink,如果不存在,请处理ENOENT错误。否则,您可以创建竞争条件。
作为公认的答案,用于fs.unlink删除文件。
但是根据Node.js文档
不建议
fs.stat()在调用之前使用来检查文件是否存在fs.open(),fs.readFile()否则fs.writeFile()不建议使用。而是,用户代码应直接打开/读取/写入文件,并在文件不可用时处理引发的错误。建议先检查文件是否存在,然后再进行操作
fs.access()。
检查文件是否可以删除,请fs.access改用
fs.access('/etc/passwd', fs.constants.R_OK | fs.constants.W_OK, (err) => {
console.log(err ? 'no access!' : 'can read/write');
});
unlink直接使用,因为他们知道自己有权删除该文件。但是fs.access如果他们需要在删除之前进行检查,则是一个很好的选择。但是我认为,如果他们需要检查文件是否存在而不随后对其进行操作,他们应该自然地使用fs.stat,fs.access在我的拙见中有不同的目的。
在我的代码下面,这很好用。
const fs = require('fs');
fs.unlink(__dirname+ '/test.txt', function (err) {
if (err) {
console.error(err);
}
console.log('File has been Deleted');
});
2019和Node 10+在这里。下面的版本使用甜蜜的异步/等待方式。
现在无需包装fs.unlink到Promises中,也不再需要使用其他软件包(例如fs-extra)。
只需使用本机fs Promises API即可。
const fs = require('fs').promises;
(async () => {
try {
await fs.unlink('~/any/file');
} catch (e) {
// file doesn't exist, no permissions, etc..
// full list of possible errors is here
// http://man7.org/linux/man-pages/man2/unlink.2.html#ERRORS
console.log(e);
}
})();
这是 fsPromises.unlink来自Node docs的规格。
另请注意,fs.promises API在Node 10.xx中标记为实验性的(但工作得很好),从以后就不再实验性了11.14.0。
您可以使用fs.unlink(path,callback)函数。这是带有“错误返回”模式的函数包装器的示例:
// Dependencies.
const fs = require('fs');
// Delete a file.
const deleteFile = (filePath, callback) => {
// Unlink the file.
fs.unlink(filePath, (error) => {
if (!error) {
callback(false);
} else {
callback('Error deleting the file');
}
})
};
从目录中删除与regexp匹配的文件名文件。仅使用fs.unlink-删除文件,fs.readdir-从目录中获取所有文件
var fs = require('fs');
const path = '/path_to_files/filename.anyextension';
const removeFile = (fileName) => {
fs.unlink(`${path}${fileName}`, function(error) {
if (error) {
throw error;
}
console.log('Deleted filename', fileName);
})
}
const reg = /^[a-zA-Z]+_[0-9]+(\s[2-4])+\./
fs.readdir(path, function(err, items) {
for (var i=0; i<items.length; i++) {
console.log(items[i], ' ', reg.test(items[i]))
if (reg.test(items[i])) {
console.log(items[i])
removeFile(items[i])
}
}
});
fs-extra 提供一种删除方法:
const fs = require('fs-extra')
fs.remove('/tmp/myfile')
.then(() => {
console.log('success!')
})
.catch(err => {
console.error(err)
})
https://github.com/jprichardson/node-fs-extra/blob/master/docs/remove.md
使用NPM模块fs-extra,它可以为您提供fs中的所有内容,而且还提供了Promisified的所有内容。作为奖励,有一个fs.remove()方法可用。
这里是您可以从文件夹中删除文件/图像的代码。
var fs = require('fs');
Gallery.findById({ _id: req.params.id},function(err,data){
if (err) throw err;
fs.unlink('public/gallery/'+data.image_name);
});
delete别名!