¿Cómo elimino un archivo con node.js?
http://nodejs.org/api/fs.html#fs_fs_rename_oldpath_newpath_callback
No veo un comando de eliminación?
¿Cómo elimino un archivo con node.js?
http://nodejs.org/api/fs.html#fs_fs_rename_oldpath_newpath_callback
No veo un comando de eliminación?
Respuestas:
rmFile
alias
rm
alias si tienen rmdir
métodos
fs.unlinkSync()
Puede llamar fs.unlink(path, callback)
para desvincular asíncrono (2) o fs.unlinkSync(path)
desvincular síncrono (2).
¿Dónde path
está la ruta del archivo que desea eliminar?
Por ejemplo, queremos eliminar el discovery.docx
archivo del c:/book
directorio. Entonces mi ruta de archivo es c:/book/discovery.docx
. Entonces, el código para eliminar ese archivo será,
var fs = require('fs');
var filePath = 'c:/book/discovery.docx';
fs.unlinkSync(filePath);
Si desea verificar el archivo antes de eliminar si existe o no. Por lo tanto, use fs.stat o fs.statSync ( Synchronous ) en lugar de fs.exists
. Porque de acuerdo con la última documentación de node.js , fs.exists
ahora en desuso .
Por ejemplo:-
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
, y si el archivo no existe, tendrá un ENOENT
error en la devolución de llamada. No es necesario verificar antes de intentar desvincular.
fs.unlink
realiza cuando el archivo no existe, por lo que mi opinión es ese archivo de verificación antes de eliminarlo.
unlink
devolución de llamada. Si se produjo ese error, el archivo no existía. Mira la respuesta de Searene, por ejemplo.
No creo que tenga que verificar si el archivo existe o no, fs.unlink
lo verificará por usted.
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`);
}
});
Aquí hay un pequeño fragmento de lo que hice para este propósito,
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
y antes de eliminarlo fs.unlink
? Podría ocurrir.
unlink
, y si no existe, maneje el ENOENT
error. De lo contrario, puede crear una condición de carrera.
Como respuesta aceptada, úsela fs.unlink
para eliminar archivos.
Pero de acuerdo con la documentación de Node.js
Se usa
fs.stat()
para verificar la existencia de un archivo antes de llamarfs.open()
,fs.readFile()
ofs.writeFile()
no se recomienda. En cambio, el código de usuario debe abrir / leer / escribir el archivo directamente y manejar el error generado si el archivo no está disponible.Para verificar si existe un archivo sin manipularlo después,
fs.access()
se recomienda.
para verificar si los archivos se pueden eliminar o no, use en su fs.access
lugar
fs.access('/etc/passwd', fs.constants.R_OK | fs.constants.W_OK, (err) => {
console.log(err ? 'no access!' : 'can read/write');
});
unlink
directamente porque saben que tienen derechos para eliminar el archivo. Pero fs.access
es una buena alternativa si necesitan verificar antes de eliminar. Pero creo que si necesitan verificar si existe un archivo sin manipularlo después, deberían usarlo naturalmente fs.stat
, fs.access
tiene un propósito diferente en mi humilde opinión.
Aquí debajo mi código que funciona bien.
const fs = require('fs');
fs.unlink(__dirname+ '/test.txt', function (err) {
if (err) {
console.error(err);
}
console.log('File has been Deleted');
});
2019 y Node 10+ están aquí . Debajo de la versión usando dulce asíncrono / espera .
Ahora ya no es necesario envolverse fs.unlink
en Promesas ni usar paquetes adicionales (como fs-extra
).
Solo use la API nativa de Promesas 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);
}
})();
Aquí hay fsPromises.unlink
especificaciones de Node docs.
También tenga en cuenta que fs.promises API marcado como experimental en el Nodo 10.xx (aunque funciona totalmente bien, sin embargo), y ya no es experimental desde entonces 11.14.0
.
puede usar del module para eliminar uno o más archivos en el directorio actual. Lo bueno de esto es que lo protege contra la eliminación del directorio de trabajo actual y superior.
const del = require('del');
del(['<your pathere here>/*']).then( (paths: any) => {
console.log('Deleted files and folders:\n', paths.join('\n'));
});
Puede usar la función fs.unlink (ruta, devolución de llamada) . Aquí hay un ejemplo del contenedor de funciones con el patrón "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');
}
})
};
Elimine archivos del directorio que coincide con regexp para nombre de archivo. Usado solo fs.unlink - para eliminar el archivo, fs.readdir - para obtener todos los archivos de un directorio
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
proporciona un método de eliminación:
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
Use el módulo NPM fs-extra , que le brinda todo en fs, además de que todo está Promisificado. Como beneficio adicional, hay un método fs.remove () disponible.
Aquí el código donde puede eliminar el archivo / imagen de la carpeta.
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
alias!