2012-01-18 10 views
11

मैं फ़ाइलों की निर्देशिका को पुन: सक्रिय कर रहा हूं और सोच रहा था कि फ़ाइल छिपी हुई है या नहीं, तो यह जांचना संभव है। वर्तमान में, मैं सिर्फ यह जांच रहा हूं कि फ़ाइल '।' से शुरू होती है या नहीं। या नहीं। यह मैक (और लिनक्स, शायद) में काम करता है, लेकिन, मैं सोच रहा हूं कि मैं विंडोज़ पर यह कैसे करूं? साथ ही, क्या अवधि लिनक्स के सभी स्वादों में फाइल को छुपाएगी?नोडजेस - छिपी हुई फाइलों के लिए जाँच करें

धन्यवाद!

कोड:

var fs = require('fs'); 
fs.readdir('/path', function(err, list) { 
    list.forEach(function(filename){ 
     var isHidden = /^\./.test(filename); 
     // etc ... 
    }); 
}); 

उत्तर

6

विंडोज 7 पर नोड 0.6.x का उपयोग कर कुछ त्वरित परीक्षण किया सेटअप 1 फ़ोल्डर, 1 की रक्षा की, 1 छिपा हुआ और विशेष गुण के बिना 1 फ़ाइल वाला कोई फ़ोल्डर था।

मैं इस फ़ोल्डर फंस और प्रविष्टियों के लिए आँकड़े दिलवाया (fs.stat का उपयोग कर (पथ, कॉलबैक)), इन परिणामों हैं:

testfolder 
fs.Stats.mode: 16895 

test_hidden.txt 
fs.Stats.mode: 33206 

test_norm.txt 
fs.Stats.mode: 33206 

test_prot.txt 
fs.Stats.mode: 33060 

आप देख सकते हैं, एक के बीच भिन्न करने में सक्षम है मोड के माध्यम से संरक्षित और छिपी/सामान्य फाइलें, लेकिन छुपी हुई विशेषता वास्तव में एक असली विशेषता है और फ़ाइल मोड से कोई लेना देना नहीं है।

विंडोज पर छिपी हुई फाइलों को विश्वसनीय रूप से पहचानने के लिए, node.js टीम को विंडोज़ पर GetFileAttributes() API को कार्यान्वित करना होगा (जैसे यह सी ++ या सी # द्वारा किया जाता है)। AFAIK, यह पाइपलाइन में नहीं है (कम से कम मुझे कुछ जल्दी googling के बाद कुछ नहीं मिला)।

एक प्रश्न द्वारा उपसर्ग किए जाने पर यूनिक्स के सभी स्वादों में छिपी हुई फाइलों के बारे में आपके प्रश्न के लिए: मैं उस वितरण में नहीं आया जहां यह काम नहीं करता था, इसलिए मेरे पीओवी से: हाँ।

+0

मेरे विंडोज डेस्कटॉप पर फ़ाइलों और फ़ोल्डरों के साथ परीक्षण। इससे कोई फर्क नहीं पड़ता कि मैंने मानक विशेषता का संयोजन किस प्रकार लागू किया था, सभी फाइलों में 33060 का एक मोड था और सभी फ़ोल्डरों का एक तरीका 16822 था। Http://stackoverflow.com/questions/13440589/retrieve-file-attributes-from- विन्डोज़ देखें एक होस्ट स्क्रिप्ट का उपयोग कर समाधान के लिए -एमएमडी। –

+1

मेरे उपरोक्त लिंक के आधार पर, मैंने छिपी हुई फाइलों को आसानी से संभालने के लिए एक मॉड्यूल लिखा: https://www.npmjs.org/package/hidefile –

14

यूनिक्स में छिपी हुई फ़ाइलों और निर्देशिका पथ को प्रभावी रूप से पहचानने के लिए नियमित अभिव्यक्ति एक लंबे पथ स्ट्रिंग के भीतर उनके अस्तित्व की संभावना के कारण थोड़ा अधिक जटिल होगी।

निम्नलिखित इसकी देखभाल करने का प्रयास करता है।

/** 
* Checks whether a path starts with or contains a hidden file or a folder. 
* @param {string} source - The path of the file that needs to be validated. 
* returns {boolean} - `true` if the source is blacklisted and otherwise `false`. 
*/ 
var isUnixHiddenPath = function (path) { 
    return (/(^|\/)\.[^\/\.]/g).test(path); 
}; 
+1

'(/ (^ |। \ /) \। + के लिए काम नहीं करता है [^\/\।]/g) .test ('/। DS_Store'); ' – Izhaki

+1

@Izhaki - अद्यतन regex। इंगित करने के लिए धन्यवाद। –

+0

क्या एक छिपी हुई फाइल को बस एक अवधि के साथ शुरू करने के रूप में परिभाषित किया गया है? –

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