2013-03-26 11 views
229

मुझे कोई खोज परिणाम नहीं मिल रहा है जो यह बताता है कि यह कैसे करें।Node.js जांचें कि पथ फ़ाइल या निर्देशिका है

मैं बस इतना करना चाहता हूं कि कोई दिया गया पथ फ़ाइल या निर्देशिका (फ़ोल्डर) है या नहीं।

उत्तर

371

fs.lstatSync(path_string).isDirectory() आपको बताना चाहिए। docs से:

fs.stat() और fs.lstat() से लौटे ऑब्जेक्ट्स इस प्रकार के हैं।

stats.isFile() 
stats.isDirectory() 
stats.isBlockDevice() 
stats.isCharacterDevice() 
stats.isSymbolicLink() (only valid with fs.lstat()) 
stats.isFIFO() 
stats.isSocket() 
+13

नोट एसिंक्रोनस संस्करण आम तौर पर पसंद किया जाता है कि यदि आप सामान्य एप्लिकेशन के प्रदर्शन के बारे में परवाह। – AlexMA

+32

ध्यान रखें कि यदि निर्देशिका या फ़ाइल मौजूद नहीं है, तो आपको एक त्रुटि वापस मिल जाएगी। –

17

यहाँ अगर एक रास्ता एक फ़ाइल या एक निर्देशिका एसिंक्रोनस रूप, जो नोड में दृष्टिकोण की सिफारिश की है आप कैसे पता लगाने जाएगा। का उपयोग कर fs.lstat

const fs = require("fs"); 

let path = "/path/to/something"; 

fs.lstat(path, (err, stats) => { 

    if(err) 
     return console.log(err); //Handle error 

    console.log(`Is file: ${stats.isFile()}`); 
    console.log(`Is directory: ${stats.isDirectory()}`); 
    console.log(`Is symbolic link: ${stats.isSymbolicLink()}`); 
    console.log(`Is FIFO: ${stats.isFIFO()}`); 
    console.log(`Is socket: ${stats.isSocket()}`); 
    console.log(`Is character device: ${stats.isCharacterDevice()}`); 
    console.log(`Is block device: ${stats.isBlockDevice()}`); 
}); 

नोट जब तुल्यकालिक एपीआई का उपयोग कर:

तुल्यकालिक प्रपत्र किसी भी अपवाद तुरंत फेंक दिया जाता है का उपयोग करते समय। आप अपवादों को संभालने के लिए प्रयास/पकड़ का उपयोग कर सकते हैं या उन्हें बुलबुला करने की अनुमति दे सकते हैं।

try{ 
    fs.lstatSync("/some/path").isDirectory() 
}catch(e){ 
    // Handle error 
    if(e.code == 'ENOENT'){ 
    //no such file or directory 
    //do something 
    }else { 
    //do something else 
    } 
} 
संबंधित मुद्दे