Jak usunąć plik za pomocą node.js?
http://nodejs.org/api/fs.html#fs_fs_rename_oldpath_newpath_callback
Nie widzę polecenia usuwania?
Jak usunąć plik za pomocą node.js?
http://nodejs.org/api/fs.html#fs_fs_rename_oldpath_newpath_callback
Nie widzę polecenia usuwania?
Odpowiedzi:
rmFilealias
rmalias, jeśli mają rmdirmetody
fs.unlinkSync()
Możesz wywołać fs.unlink(path, callback)Asynchroniczne rozłączenie (2) lub fs.unlinkSync(path)Synchroniczne rozłączenie (2).
Gdzie pathjest ścieżka do pliku, którą chcesz usunąć.
Na przykład chcemy usunąć discovery.docxplik z c:/bookkatalogu. Więc moja ścieżka do pliku to c:/book/discovery.docx. Kod do usunięcia tego pliku będzie:
var fs = require('fs');
var filePath = 'c:/book/discovery.docx';
fs.unlinkSync(filePath);
Jeśli chcesz sprawdzić plik przed usunięciem, czy istnieje, czy nie. Tak więc zamiast fs.stat lub fs.statSync ( synchroniczny ) fs.exists. Ponieważ zgodnie z najnowszą dokumentacją node.js , fs.existsteraz przestarzała .
Na przykład:-
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, a jeśli plik nie istnieje, wystąpi ENOENTbłąd w wywołaniu zwrotnym. Nie musisz sprawdzać przed próbą rozłączenia.
fs.unlinkwykonuje się, gdy plik nie istnieje, więc moim zdaniem jest to sprawdzenie pliku przed usunięciem.
unlinkwywołaniu zwrotnym. Jeśli ten błąd wystąpił, plik nie istniał. Spójrz na przykład na odpowiedź Searene.
Nie sądzę, że musisz sprawdzić, czy plik istnieje, czy nie, fs.unlinksprawdzi go za Ciebie.
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`);
}
});
Oto mały fragment, który zrobiłem w tym celu,
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.existsi przed usunięciem za pomocą fs.unlink? To może się zdarzyć.
unlink, a jeśli nie istnieje, obsłużyć ENOENTbłąd. W przeciwnym razie możesz stworzyć warunki wyścigu.
Jako zaakceptowaną odpowiedź użyj fs.unlinkdo usunięcia plików.
Ale zgodnie z dokumentacją Node.js
Korzystanie
fs.stat()celu sprawdzenia istnienia pliku przed wywołaniemfs.open(),fs.readFile()czyfs.writeFile()nie jest to zalecane. Zamiast tego kod użytkownika powinien otwierać / odczytywać / zapisywać plik bezpośrednio i obsługiwać zgłoszony błąd, jeśli plik nie jest dostępny.
fs.access()Zalecane jest sprawdzenie, czy plik istnieje bez późniejszego manipulowania nim .
aby sprawdzić, czy pliki można usunąć, czy nie, użyj fs.accessZamiast tego
fs.access('/etc/passwd', fs.constants.R_OK | fs.constants.W_OK, (err) => {
console.log(err ? 'no access!' : 'can read/write');
});
unlinkbezpośrednio, ponieważ wiedzą, że mają prawa do usunięcia pliku. Ale fs.accessjest dobrą alternatywą, jeśli trzeba sprawdzić przed usunięciem. Ale myślę, że jeśli muszą sprawdzić, czy plik istnieje bez późniejszego manipulowania nim, powinni naturalnie użyć fs.stat, fs.accessma inny cel, moim skromnym zdaniem.
Tutaj poniżej mój kod, który działa dobrze.
const fs = require('fs');
fs.unlink(__dirname+ '/test.txt', function (err) {
if (err) {
console.error(err);
}
console.log('File has been Deleted');
});
2019 i Node 10+ jest tutaj . Poniżej wersji używającej słodkiej asynchronizacji / oczekuj na sposób.
Teraz nie trzeba już owijać fs.unlinkw Obietnice ani używać dodatkowych pakietów (takich jak fs-extra).
Wystarczy użyć natywnego 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);
}
})();
Oto fsPromises.unlink specyfikacja z dokumentów Node.
Należy również pamiętać, że interfejs API fs.promises oznaczony jako eksperymentalny w węźle 10.xx (choć działa całkowicie dobrze) i od tego czasu nie jest już eksperymentalny 11.14.0.
możesz użyć modułu del , aby usunąć jeden lub więcej plików z bieżącego katalogu. to, co jest miłe w tym, że chroni cię przed usunięciem bieżącego katalogu roboczego i wyżej.
const del = require('del');
del(['<your pathere here>/*']).then( (paths: any) => {
console.log('Deleted files and folders:\n', paths.join('\n'));
});
Możesz użyć funkcji fs.unlink (ścieżka, wywołanie zwrotne) . Oto przykład opakowania funkcji ze wzorem „powrót po błędzie”:
// 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');
}
})
};
Usuń pliki z katalogu, który pasował do wyrażenia regularnego dla nazwy pliku. Używany tylko fs.unlink - do usunięcia pliku, fs.readdir - do pobrania wszystkich plików z katalogu
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 zapewnia metodę usuwania:
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
Użyj modułu NPM fs-extra , który daje ci wszystko w fs, a także wszystko jest Promisified. Jako bonus dostępna jest metoda fs.remove () .
Tutaj kod, w którym możesz usunąć plik / obraz z folderu.
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!