Як видалити файл з node.js?
http://nodejs.org/api/fs.html#fs_fs_rename_oldpath_newpath_callback
Я не бачу команди видалення?
Як видалити файл з node.js?
http://nodejs.org/api/fs.html#fs_fs_rename_oldpath_newpath_callback
Я не бачу команди видалення?
Відповіді:
Ви можете закликати fs.unlink(path, callback)до асинхронного відключення (2) або fs.unlinkSync(path)для синхронного відключення (2).
Де pathфайл-шлях, який потрібно видалити.
Наприклад, ми хочемо видалити discovery.docxфайл з c:/bookкаталогу. Отже, мій шлях до файлів є 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, і якщо файл не існує, ви отримаєте ENOENTпомилку в зворотному дзвінку . Не потрібно перевіряти, перш ніж намагатися від’єднатися.
fs.unlinkвиконувати, коли файл не існував, тому я вважаю, що перевірити файл перед видаленням.
unlinkзворотному дзвінку. Якщо виникла помилка, файл не існував. Подивіться, наприклад, відповідь 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на Обіцянках і більше не використовувати додаткові пакети (як fs-extra).
Просто використовуйте рідний API fs Promises .
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.
Також зауважте, що API fs.promises позначений як експериментальний у вузлі 10.xx (однак він працює зовсім чудово), але з цього часу вже не експериментальний 11.14.0.
ви можете використовувати модуль del для видалення одного або декількох файлів у поточному каталозі. що приємно в тому, що захищає вас від видалення поточного робочого каталогу та вище.
const del = require('del');
del(['<your pathere here>/*']).then( (paths: any) => {
console.log('Deleted files and folders:\n', paths.join('\n'));
});
Ви можете використовувати функцію fs.unlink (шлях, зворотний виклик) . Ось приклад функціональної обгортки з малюнком "відхилення помилок":
// 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-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, а також все, що рекламується. Як бонус, доступний метод 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псевдонім!