Node.js ile bir dosyayı nasıl silebilirim?
http://nodejs.org/api/fs.html#fs_fs_rename_oldpath_newpath_callback
Kaldırma komutunu görmüyor musunuz?
Node.js ile bir dosyayı nasıl silebilirim?
http://nodejs.org/api/fs.html#fs_fs_rename_oldpath_newpath_callback
Kaldırma komutunu görmüyor musunuz?
Yanıtlar:
rmFiletakma ad
rmvarsa takma adrmdir
fs.unlinkSync()
fs.unlink(path, callback)Eşzamansız bağlantıyı kaldırmayı (2) veya Eşzamanlı bağlantıyı kaldırmayı (2) arayabilirsiniz fs.unlinkSync(path). Kaldırmak istediğiniz dosya yolu
nerede path.
Örneğin discovery.docxdosyayı dizinden kaldırmak istiyoruz c:/book. Yani dosya yolum c:/book/discovery.docx. Bu dosyayı kaldırmak için kod,
var fs = require('fs');
var filePath = 'c:/book/discovery.docx';
fs.unlinkSync(filePath);
Dosyayı kontrol etmeden önce var olup olmadığını kontrol etmek istiyorsanız. Bu nedenle, yerine fs.stat veya fs.statSync ( Senkron ) kullanın fs.exists. Çünkü en son node.js belgelerine göre fs.existsartık kullanımdan kaldırıldı .
Örneğin:-
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.unlinkve dosya yoksa ENOENT, geri aramada bir hata oluşur. Bağlantıyı kaldırmayı denemeden önce kontrol etmeye gerek yok.
fs.unlinkdosya olmadığında gerçekleştiriliyor, bu yüzden benim görüşüm kaldırmadan önce kontrol dosyası.
unlinkgeri aramada ENOENT hata kodunu kontrol edin . Bu hata oluşursa dosya yoktu. Örneğin Searene'nin cevabına bakın.
Dosyanın var olup olmadığını kontrol etmeniz gerektiğini düşünmüyorum, sizin için kontrol fs.unlinkedecektir.
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`);
}
});
İşte bu amaçla yaptığım küçük bir pasaj,
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.existsve kaldırılmadan önce başkaları tarafından silinirse ne olur fs.unlink? Olabilir.
unlinkve yoksa, ENOENThatayı ele alın . Aksi takdirde bir yarış koşulu oluşturabilirsiniz.
Kabul edilen cevap olarak, fs.unlinkdosyaları silmek için kullanın .
Ancak Node.js belgelerine göre
Kullanılması
fs.stat()çağırmadan önce bir dosyanın varlığını denetlemek içinfs.open(),fs.readFile()ya dafs.writeFile()tavsiye edilmez. Bunun yerine, kullanıcı kodu dosyayı doğrudan açmalı / okumalı / yazmalı ve dosya bulunmuyorsa oluşan hatayı işlemelidir.Bir dosyanın daha sonra değiştirilmeden var olup olmadığını kontrol etmek
fs.access()için önerilir.
check dosyalar silinmiş ya da olmasın, Kullanım edilebilir fs.accessyerine
fs.access('/etc/passwd', fs.constants.R_OK | fs.constants.W_OK, (err) => {
console.log(err ? 'no access!' : 'can read/write');
});
unlinkdosyayı silme haklarına sahip olduklarını bildikleri için doğrudan kullanır . Ancak fs.access, silinmeden önce kontrol etmeleri gerekiyorsa iyi bir alternatiftir. Ama onlar bir dosya sonradan manipüle etmeden varlığının kontrol edilmesi gerekiyorsa, bunlar doğal olarak kullanması gereken düşünüyorum fs.stat, fs.accessbenim düşünceme göre farklı bir amacı vardır.
Burada benim kod iyi çalışıyor.
const fs = require('fs');
fs.unlink(__dirname+ '/test.txt', function (err) {
if (err) {
console.error(err);
}
console.log('File has been Deleted');
});
2019 ve Düğüm 10+ burada . Sürümün altında tatlı asenkron / bekliyor yolunu kullanarak .
Artık fs.unlinkPromises'e ya da ek paketler (gibi fs-extra) kullanmaya gerek yok.
Sadece yerel FS Promises API'sını kullanın .
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);
}
})();
İşte fsPromises.unlink Düğüm belgelerinden spec.
Ayrıca, fs.promises'ın 10. Düğümde deneysel olarak işaretlenmiş API'yı (ancak yine de tamamen iyi çalışıyor) ve o zamandan beri deneysel olmadığını unutmayın 11.14.0.
geçerli dizindeki bir veya daha fazla dosyayı kaldırmak için del modülünü kullanabilirsiniz . bunun güzel yanı sizi geçerli çalışma dizinini ve üstünü silmeye karşı koruyabilmesidir.
const del = require('del');
del(['<your pathere here>/*']).then( (paths: any) => {
console.log('Deleted files and folders:\n', paths.join('\n'));
});
Sen kullanabilir fs.unlink (yol, geri arama) işlevini. Aşağıda "hata geri" desenli işlev sarmalayıcı örneği:
// 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');
}
})
};
Dosya adı için regexp ile eşleşen dizindeki dosyaları kaldırın. Yalnızca fs.unlink - dosyayı kaldırmak için, fs.readdir - bir dizindeki tüm dosyaları almak için kullanılır
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 bir kaldırma yöntemi sağlar:
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 modülünü fs-extra kullanın , bu size fs'de her şeyi verir, ayrıca her şey Promisified'dir. Bonus olarak, kullanılabilir bir fs.remove () yöntemi vardır.
Burada dosya / resmi klasörden silebileceğiniz kod.
var fs = require('fs');
Gallery.findById({ _id: req.params.id},function(err,data){
if (err) throw err;
fs.unlink('public/gallery/'+data.image_name);
});
deletetakma ad ekleyebileceklerini düşünürsün !