[英]node.js remove file
如何刪除帶有 node.js 的文件?
http://nodejs.org/api/fs.html#fs_fs_rename_oldpath_newpath_callback
我沒有看到刪除命令?
您可以為異步 unlink(2) 調用fs.unlink(path, callback)
或為同步 unlink(2) 調用 fs.unlinkSync( fs.unlinkSync(path)
)。
其中path
是您要刪除的文件路徑。
例如,我們想從c:/book
目錄中刪除discovery.docx
文件。 所以我的文件路徑是c:/book/discovery.docx
。 所以刪除該文件的代碼將是,
var fs = require('fs');
var filePath = 'c:/book/discovery.docx';
fs.unlinkSync(filePath);
如果要在刪除之前檢查文件是否存在。 因此,請使用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
會為您檢查。
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.'));
}
});
2019 和 Node 10+ 就在這里。 下面的版本使用sweet async/await方式。
現在無需將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);
}
})();
這是來自 Node 文檔的fsPromises.unlink
規范。
另請注意,fs.promises API 在 Node 10.xx 中標記為實驗性的(但工作完全正常),並且自11.14.0
起不再是實驗性的。
2020答案
隨着 node v14.14.0
的發布,您現在可以這樣做了。
fs.rmSync("path/to/file", {
force: true,
});
作為接受的答案,使用fs.unlink
刪除文件。
但根據Node.js 文檔
不建議在調用
fs.open()
、fs.readFile()
或fs.writeFile()
之前使用fs.stat()
檢查文件是否存在。 相反,用戶代碼應該直接打開/讀取/寫入文件並處理文件不可用時引發的錯誤。要檢查文件是否存在而不隨后對其進行操作,建議使用
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');
});
下面是我的代碼,它工作正常。
const fs = require('fs');
fs.unlink(__dirname+ '/test.txt', function (err) {
if (err) {
console.error(err);
}
console.log('File has been Deleted');
});
簡單和同步
if (fs.existsSync(pathToFile)) {
fs.unlinkSync(pathToFile)
}
您可以執行以下操作
const deleteFile = './docs/deleteme.txt'
if (fs.existsSync(deleteFile)) {
fs.unlink(deleteFile, (err) => {
if (err) {
console.log(err);
}
console.log('deleted');
})
}
fs.unlinkSync()
如果你想同步刪除文件並且fs.unlink()
如果你想異步刪除它。在這里你可以找到一篇好文章。
rm -rf
require("fs").rmSync(file_or_directory_path_existing_or_not, {recursive: true, force: true});
// Added in Node.js 14.14.0.
使用require("fs").rmSync
或require("fs").rm
。
您可以使用del模塊刪除當前目錄中的一個或多個文件。 它的好處是可以保護您不刪除當前工作目錄及以上目錄。
const del = require('del');
del(['<your pathere here>/*']).then( (paths: any) => {
console.log('Deleted files and folders:\n', paths.join('\n'));
});
您可以使用fs.unlink(path, callback)函數。 下面是一個帶有“error-back”模式的函數包裝器示例:
// 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'); } }) };
從與文件名的正則表達式匹配的目錄中刪除文件。 僅使用 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 非常容易。
var fs = require('fs');
try{
var sourceUrls = "/sampleFolder/sampleFile.txt";
fs.unlinkSync(sourceUrls);
}catch(err){
console.log(err);
}
2022答案
永遠不要在 Nodejs 中進行任何同步操作
要異步刪除文件,
const { unlink } = require('fs/promises');
(async function(path) {
try {
await unlink(path);
console.log(`successfully deleted ${path}`);
} catch (error) {
console.error('there was an error:', error.message);
}
})('/tmp/hello');
參考: https ://nodejs.org/api/fs.html#promise-example
建議在使用access或stat刪除之前檢查文件是否存在
import { access, constants } from 'fs';
const file = 'package.json';
// Check if the file exists in the current directory.
access(file, constants.F_OK, (err) => {
console.log(`${file} ${err ? 'does not exist' : 'exists'}`);
});
參考: https ://nodejs.org/api/fs.html#fsaccesspath-mode-callback
fs-extra
提供了一個 remove 方法:
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
您可以使用以下代碼。 我認為它有效。
const fs = require('fs');
fs.unlink('./uploads/file.png', function (err) {
if (err) {
console.error(err);
console.log('File not found');
}else{
console.log('File Delete Successfuly');
}
});
使用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);
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.