Wie lösche ich eine Datei mit node.js?
http://nodejs.org/api/fs.html#fs_fs_rename_oldpath_newpath_callback
Ich sehe keinen Befehl zum Entfernen?
Wie lösche ich eine Datei mit node.js?
http://nodejs.org/api/fs.html#fs_fs_rename_oldpath_newpath_callback
Ich sehe keinen Befehl zum Entfernen?
Antworten:
rmFile
Alias
rm
Alias, wenn sie rmdir
Methoden haben
fs.unlinkSync()
Sie können die fs.unlink(path, callback)
asynchrone Verknüpfung (2) oder die fs.unlinkSync(path)
synchrone Verknüpfung (2) aufrufen .
Wo path
ist der Dateipfad, den Sie entfernen möchten?
Zum Beispiel möchten wir die discovery.docx
Datei aus dem c:/book
Verzeichnis entfernen . Mein Dateipfad ist also c:/book/discovery.docx
. Der Code zum Entfernen dieser Datei lautet also:
var fs = require('fs');
var filePath = 'c:/book/discovery.docx';
fs.unlinkSync(filePath);
Wenn Sie die Datei vor dem Löschen überprüfen möchten, ob sie vorhanden ist oder nicht. Verwenden Sie also fs.stat oder fs.statSync ( Synchronous ) anstelle von fs.exists
. Da nach dem neuesten Stand node.js Dokumentation , fs.exists
jetzt veraltet .
Zum Beispiel:-
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
. Wenn die Datei nicht vorhanden ist, ENOENT
wird im Rückruf ein Fehler angezeigt. Sie müssen dies nicht überprüfen, bevor Sie versuchen, die Verknüpfung aufzuheben.
fs.unlink
, wenn die Datei nicht vorhanden ist ?
unlink
Rückruf. Wenn dieser Fehler aufgetreten ist, war die Datei nicht vorhanden. Schauen Sie sich zum Beispiel Searenes Antwort an.
Ich glaube nicht, dass Sie überprüfen müssen, ob eine Datei vorhanden ist oder nicht, fs.unlink
wird sie für Sie überprüfen.
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`);
}
});
Hier ist ein kleiner Ausschnitt von mir, den ich zu diesem Zweck gemacht habe:
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
und vor dem Entfernen mit überprüft haben fs.unlink
? Es könnte passieren.
unlink
und behandeln Sie den ENOENT
Fehler , falls er nicht vorhanden ist . Andernfalls können Sie eine Rennbedingung erstellen.
Verwenden Sie als akzeptierte Antwort, fs.unlink
um Dateien zu löschen.
Aber laut Node.js Dokumentation
Verwenden Sie
fs.stat()
diese Option, um vor dem Aufrufen zu prüfen, ob eine Datei vorhanden istfs.open()
,fs.readFile()
oder diesfs.writeFile()
wird nicht empfohlen. Stattdessen sollte der Benutzercode die Datei direkt öffnen / lesen / schreiben und den Fehler behandeln, der ausgelöst wird, wenn die Datei nicht verfügbar ist.Es
fs.access()
wird empfohlen, zu überprüfen, ob eine Datei vorhanden ist, ohne sie anschließend zu bearbeiten.
Um zu überprüfen, ob Dateien gelöscht werden können oder nicht, verwenden Sie fs.access
stattdessen
fs.access('/etc/passwd', fs.constants.R_OK | fs.constants.W_OK, (err) => {
console.log(err ? 'no access!' : 'can read/write');
});
unlink
direkt, weil sie wissen, dass sie Rechte zum Löschen der Datei haben. Dies fs.access
ist jedoch eine gute Alternative, wenn sie vor dem Löschen überprüft werden müssen. Aber ich denke, wenn sie überprüfen müssen, ob eine Datei existiert, ohne sie danach zu manipulieren, sollten sie natürlich verwenden fs.stat
, fs.access
hat meiner bescheidenen Meinung nach einen anderen Zweck.
Hier unten mein Code, der gut funktioniert.
const fs = require('fs');
fs.unlink(__dirname+ '/test.txt', function (err) {
if (err) {
console.error(err);
}
console.log('File has been Deleted');
});
2019 und Node 10+ ist da . Unterhalb der Version mit süßem Async / Warten Weg.
Jetzt müssen Sie sich nicht mehr fs.unlink
in Promises einwickeln oder zusätzliche Pakete (wie fs-extra
) verwenden.
Verwenden Sie einfach die native 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);
}
})();
Hier ist eine fsPromises.unlink
Spezifikation aus Node-Dokumenten.
Beachten Sie auch, dass die fs.promises-API in Node 10.xx als experimentell markiert ist (funktioniert aber völlig in Ordnung) und seitdem nicht mehr experimentell ist 11.14.0
.
Mit dem del- Modul können Sie eine oder mehrere Dateien im aktuellen Verzeichnis entfernen. Das Schöne daran ist, dass Sie vor dem Löschen des aktuellen Arbeitsverzeichnisses und höher geschützt sind.
const del = require('del');
del(['<your pathere here>/*']).then( (paths: any) => {
console.log('Deleted files and folders:\n', paths.join('\n'));
});
Sie können die Funktion fs.unlink (Pfad, Rückruf) verwenden. Hier ist ein Beispiel für den Funktions-Wrapper mit "Fehler-Zurück" -Muster:
// 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');
}
})
};
Entfernen Sie Dateien aus dem Verzeichnis, das mit regulärem Ausdruck für Dateinamen übereinstimmt. Wird nur fs.unlink verwendet, um Dateien zu entfernen, fs.readdir, um alle Dateien aus einem Verzeichnis abzurufen
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
bietet eine Methode zum Entfernen:
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
Verwenden Sie das NPM-Modul fs-extra , mit dem Sie alles in fs erhalten und alles versprochen ist. Als Bonus steht eine fs.remove () -Methode zur Verfügung.
Hier der Code, mit dem Sie Datei / Bild aus Ordner löschen können.
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 hinzufügen !