Come cancello un file con node.js?
http://nodejs.org/api/fs.html#fs_fs_rename_oldpath_newpath_callback
Non vedo un comando di rimozione?
Come cancello un file con node.js?
http://nodejs.org/api/fs.html#fs_fs_rename_oldpath_newpath_callback
Non vedo un comando di rimozione?
Risposte:
rmFilealias
rmalias se hanno rmdirmetodi
fs.unlinkSync()
È possibile richiedere lo fs.unlink(path, callback)scollegamento asincrono (2) o lo fs.unlinkSync(path)scollegamento sincrono (2).
Dove si pathtrova il percorso del file che si desidera rimuovere.
Ad esempio, vogliamo rimuovere il discovery.docxfile dalla c:/bookdirectory. Quindi il mio percorso file è c:/book/discovery.docx. Quindi il codice per rimuovere quel file sarà,
var fs = require('fs');
var filePath = 'c:/book/discovery.docx';
fs.unlinkSync(filePath);
Se si desidera controllare il file prima di eliminare se esiste o meno. Quindi, utilizzare fs.stat o fs.statSync ( Synchronous ) invece di fs.exists. Perché secondo l'ultima documentazione di node.js , fs.existsora obsoleta .
Per esempio:-
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, e se il file non esiste, avrai un ENOENTerrore nel callback. Non è necessario controllare prima di provare a scollegare.
fs.unlinkeseguita quando il file non esiste, quindi la mia visione è quella di controllare il file prima di rimuoverlo.
unlinkcallback. Se si è verificato quell'errore, il file non esisteva. Guarda la risposta di Searene per esempio.
Non penso che devi controllare se il file esiste o no, fs.unlinklo controllerò per te.
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`);
}
});
Ecco un piccolo frammento di quello che ho fatto per questo scopo,
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.existse prima di rimuoverlo con fs.unlink? Potrebbe succedere.
unlinke, se non esiste, gestire l' ENOENTerrore. Altrimenti puoi creare una condizione di gara.
Come risposta accettata, utilizzare fs.unlink per eliminare i file.
Ma secondo la documentazione di Node.js
utilizzando
fs.stat()per verificare l'esistenza di un file prima di chiamarefs.open(),fs.readFile()oppurefs.writeFile()non è raccomandato. Invece, il codice utente dovrebbe aprire / leggere / scrivere direttamente il file e gestire l'errore generato se il file non è disponibile.Per verificare se esiste un file senza modificarlo in seguito,
fs.access()si consiglia.
per verificare che i file possano essere eliminati o meno, utilizzare fs.accessinvece
fs.access('/etc/passwd', fs.constants.R_OK | fs.constants.W_OK, (err) => {
console.log(err ? 'no access!' : 'can read/write');
});
unlinkdirettamente perché sa di avere i diritti per eliminare il file. Ma fs.accessè una buona alternativa se devono controllare prima dell'eliminazione. Ma penso che se hanno bisogno di controllare se esiste un file senza manipolarlo in seguito, dovrebbero naturalmente usarlo fs.stat, fs.accesssecondo la mia modesta opinione ha uno scopo diverso.
Di seguito il mio codice che funziona bene.
const fs = require('fs');
fs.unlink(__dirname+ '/test.txt', function (err) {
if (err) {
console.error(err);
}
console.log('File has been Deleted');
});
2019 e Nodo 10+ è qui . Di seguito la versione usando sweet async / waitit .
Ora non è più necessario fs.unlinkinserire promesse né utilizzare pacchetti aggiuntivi (comefs-extra ).
Usa l' API Promises nativa di fs .
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);
}
})();
Qui è fsPromises.unlink specifiche dai documenti Node.
Inoltre, tieni presente che l'API di fs.promises è stata contrassegnata come sperimentale nel Nodo 10.xx (ma funziona del tutto bene, però), e da allora non è più sperimentale 11.14.0.
puoi usare del module per rimuovere uno o più file nella directory corrente. la cosa bella è che ti protegge dall'eliminazione della directory di lavoro corrente e superiore.
const del = require('del');
del(['<your pathere here>/*']).then( (paths: any) => {
console.log('Deleted files and folders:\n', paths.join('\n'));
});
È possibile utilizzare la funzione fs.unlink (path, callback) . Ecco un esempio del wrapper di funzione con il modello "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');
}
})
};
Rimuovere i file dalla directory che corrisponde a regexp per il nome file. Usato solo fs.unlink - per rimuovere file, fs.readdir - per ottenere tutti i file da una directory
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 fornisce un metodo di rimozione:
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
Usa il modulo NPM fs-extra , che ti dà tutto in fs, più tutto è promesso. Come bonus, è disponibile un metodo fs.remove () .
Qui il codice in cui è possibile eliminare il file / l'immagine dalla cartella.
var fs = require('fs');
Gallery.findById({ _id: req.params.id},function(err,data){
if (err) throw err;
fs.unlink('public/gallery/'+data.image_name);
});
deletealias!