如何用node.js刪除文件?node.js刪除文件
http://nodejs.org/api/fs.html#fs_fs_rename_oldpath_newpath_callback
我沒有看到一個刪除命令?
如何用node.js刪除文件?node.js刪除文件
http://nodejs.org/api/fs.html#fs_fs_rename_oldpath_newpath_callback
我沒有看到一個刪除命令?
您可以撥打fs.unlink(path, callback)
異步的unlink(2)或fs.unlinkSync(path)
用於同步的unlink(2)。
其中path
是您要刪除的文件路徑。
例如,我們想從c:/book
目錄中刪除discovery.docx
文件。所以我的文件路徑是c:/book/discovery.docx
。所以代碼刪除該文件會,
var fs = require('fs');
var filePath = 'c:/book/discovery.docx';
fs.unlinkSync(filePath);
這裏是一個小片段的我爲這個目的而作出,
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.stat或fs.statSync(同步),而不是fs.exists
。因爲根據最新的節點.js documentation,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');
});
});
如果我檢查它是否存在,但是它被另一個進程阻塞 - 或者我檢查它存在,並且很好,但是在我能夠刪除之前,另一個進程會隨機阻止它。如何在檢查後立即封鎖?那麼我不能刪除它的阻止 – 2016-10-11 15:40:09
請注意,fs.exists()已被棄用,但fs.existsSync()不是。 – Tim 2017-01-21 16:14:48
有一個不推薦的原因:如果在刪除文件之前檢查文件是否存在,通常會創建競爭條件。相反,你應該只調用'fs.unlink',如果文件不存在,你將在回調中出現'ENOENT'錯誤。在嘗試取消鏈接之前不需要檢查。 – ZachB 2017-07-25 05:26:20
這裏的代碼,你可以從文件夾中刪除文件/圖像。
var fs = require('fs');
Gallery.findById({ _id: req.params.id},function(err,data){
if (err) throw err;
fs.unlink('public/gallery/'+data.image_name);
});
由於節點7的回調參數不再是可選的,並且會導致警告。如果你真的不關心它,傳遞一個空函數。 – jlh 2017-07-24 12:14:18
我覺得你沒有檢查,如果文件存在與否,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`);
}
});
如何在我們的控制器中獲得以前的圖像名稱? – Chaudhary 2017-12-06 04:54:15
謝謝Searene,這適用於我的場景。 – user752746 2018-01-26 23:04:41
作爲公認的答案,使用fs.unlink
刪除文件。
使用
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');
});
可以使用del模塊刪除當前目錄中的一個或多個文件。它的好處是可以防止刪除當前和以上的工作目錄。
const del = require('del');
del(['<your pathere here>/*']).then((paths: any) => {
console.log('Deleted files and folders:\n', paths.join('\n'));
});
使用NPM module fs-extra,它給你的一切在FS,加上一切都是Promisified。作爲獎勵,有一個fs.remove() method可用。
我相信它來自POSIX標準。但是你會認爲他們可以添加一個'delete'別名! – Nick 2012-09-13 08:04:01
同意,但要了解更多背景http://en.wikipedia.org/wiki/Unlink_(Unix) – i3enhamin 2013-04-23 20:25:50
@Nick或'rmFile'別名 – PixnBits 2015-05-19 15:42:28