2011-03-15 14 views

उत्तर

547

मुझे लगता है कि आप fs.unlink का उपयोग करना चाहते हैं।

fs पर अधिक जानकारी here मिल सकती है।

+86

मुझे विश्वास है कि यह POSIX मानक से आता है। लेकिन आपको लगता है कि वे 'हटाएं' उपनाम जोड़ सकते हैं! – Nick

+23

सहमत हैं, लेकिन अधिक पृष्ठभूमि के लिए http://en.wikipedia.org/wiki/Unlink_(Unix) – i3enhamin

+6

@ निक या 'आरएमफ़ाइल' उपनाम – PixnBits

138

सिंक्रोनस अनलिंक (2) के लिए आप असिंक्रोनस अनलिंक (2) या fs.unlinkSync(path) के लिए fs.unlink(path, callback) पर कॉल कर सकते हैं।
जहां path फ़ाइल-पथ है जिसे आप निकालना चाहते हैं।

उदाहरण के लिए हम c:/book निर्देशिका से discovery.docx फ़ाइल को हटाना चाहते हैं। तो मेरा फ़ाइल-पथ c:/book/discovery.docx है। तो हटाने के उस फ़ाइल हो जाएगा के लिए कोड,

var fs = require('fs'); 
var filePath = 'c:/book/discovery.docx'; 
fs.unlinkSync(filePath); 
21

यहां एक छोटा टुकड़ा की मैं इस उद्देश्य के लिए बनाई गई है,

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.')); 
    } 
}); 
+4

Async मौजूद है https://nodejs.org/api/fs.html#fs_fs_exists_path_callback – Mirodinho

+1

क्या होगा यदि आप 'fs.exists' से जांचने के बाद और इसे fs.unlink' से हटाए जाने से पहले फ़ाइल को हटा दिया जाए तो क्या होगा? यह हो सकता है। – Searene

+2

आपको यह जांचना नहीं चाहिए कि फ़ाइल अनलिंक करने का प्रयास करने से पहले मौजूद है या नहीं। बस 'अनलिंक' पर कॉल करें, और यदि यह अस्तित्व में नहीं है, तो 'ENOENT' त्रुटि को संभाल लें। अन्यथा आप दौड़ की स्थिति बना सकते हैं। – ZachB

43

से पहले हटाता है या नहीं यह अस्तित्व में है या नहीं आप फ़ाइल जाँच करना चाहते हैं। तो, fs.stat या fs.statSync (सिंक्रोनस) fs.exists के बजाय उपयोग करें। क्योंकि नवीनतम node.js documentation, fs.exists के अनुसार अब को हटा दिया गया है।

उदाहरण के लिए: -

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'); 
    }); 
}); 
+0

क्या होगा यदि मैं इसे जांचता हूं, लेकिन यह किसी अन्य प्रक्रिया द्वारा अवरुद्ध है - या, मैं इसे जांचता हूं, और यह ठीक है, लेकिन फिर एक और प्रक्रिया यादृच्छिक रूप से इसे हटाने में सक्षम होने से पहले इसे अवरुद्ध करती है। जांच के बाद मैं सीधे कैसे ब्लॉक कर सकता हूं? तो मैं इसके अवरुद्ध –

+0

के रूप में हटाने में सक्षम नहीं होगा नोट करें कि fs.exists() को बहिष्कृत किया गया है, लेकिन fs.existsSync() नहीं है। – Tim

+0

एक कारण है कि इसे बहिष्कृत किया गया है: यदि आप जांचते हैं कि फ़ाइल हटाने से पहले फ़ाइल मौजूद है तो अक्सर आप दौड़ की स्थिति बनाते हैं। इसके बजाय, आपको केवल 'fs.unlink' को कॉल करना चाहिए, और यदि फ़ाइल मौजूद नहीं है, तो आपके पास कॉलबैक में' ENOENT' त्रुटि होगी। अनलिंक करने का प्रयास करने से पहले जांचने की आवश्यकता नहीं है। – ZachB

-2

यहाँ कोड है जहाँ आप फ़ोल्डर से फ़ाइल/छवि हटा सकते हैं।

var fs = require('fs'); 
Gallery.findById({ _id: req.params.id},function(err,data){ 
    if (err) throw err; 
    fs.unlink('public/gallery/'+data.image_name); 
}); 
+0

नोड 7 के बाद से कॉलबैक तर्क अब वैकल्पिक नहीं है और इसके परिणामस्वरूप चेतावनी होगी। यदि आप वास्तव में इसकी परवाह नहीं करते हैं तो एक खाली कार्य पास करें। – jlh

11

मुझे लगता है कि आप यदि फ़ाइल मौजूद है या नहीं, fs.unlink आप के लिए यह जांच करेंगे कि जांच करने के लिए नहीं है।

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`); 
    } 
}); 
+0

मैं अपने नियंत्रक में पिछले छवि का नाम कैसे प्राप्त कर सकता हूं? – Chaudhary

+0

धन्यवाद Searene, यह मेरे परिदृश्य के लिए काम किया। – user752746

3

स्वीकृत उत्तर के रूप में, फ़ाइलों को हटाने के लिए fs.unlink का उपयोग करें।

लेकिन Node.js documentation

एक फ़ाइल के होने की जाँच करने के लिए fs.stat() का उपयोग के अनुसार fs.open(), fs.readFile() या fs.writeFile() कॉल करने से पहले अनुशंसित नहीं है। इसके बजाए, उपयोगकर्ता कोड को फ़ाइल को सीधे खोलना/पढ़ना/लिखना चाहिए और फ़ाइल उपलब्ध नहीं होने पर उठाई गई त्रुटि को संभालना चाहिए।

यह जांचने के लिए कि फ़ाइल बाद में इसे बिना किसी चिपकाए बिना मौजूद है, fs.access() अनुशंसित है।

जाँच करने के लिए फाइल या हटाया जा सकता है नहीं, fs.access बजाय

fs.access('/etc/passwd', fs.constants.R_OK | fs.constants.W_OK, (err) => { 
    console.log(err ? 'no access!' : 'can read/write'); 
}); 
0

आप वर्तमान निर्देशिका में एक या अधिक फ़ाइलों को दूर करने के del मॉड्यूल का उपयोग कर सकते हैं का प्रयोग करें। इसके बारे में क्या अच्छा है यह आपको वर्तमान कार्यशील निर्देशिका और ऊपर हटाने के खिलाफ सुरक्षा देता है।

const del = require('del'); 
del(['<your pathere here>/*']).then((paths: any) => { 
    console.log('Deleted files and folders:\n', paths.join('\n')); 
}); 
0

उपयोग NPM module fs-extra, जो आप FS में सब कुछ देता है, के साथ साथ सब कुछ Promisified है। बोनस के रूप में, fs.remove() method उपलब्ध है।

संबंधित मुद्दे