2013-07-31 7 views
6

में रिक्त स्थान से बचें मैं सोच रहा हूं कि मैं फ़ाइल पथ में दिखाई देने वाली रिक्त स्थान के सामने \ प्रोग्रामेटिक रूप से कैसे जोड़ सकता हूं। मैं निर्देशिकाओं की सामग्री प्राप्त करने के लिए fs.readdir का उपयोग कर रहा हूं और यदि मैं पथ से बाहर की जगहों से बच नहीं पाता हूं तो मुझे ENOENT त्रुटि मिलती है क्योंकि अनसुलझा पथ यूनिक्स में अमान्य हैं। मैं परिणाम के नीचे मिल चाहते हैं:फ़ाइल पथ

/path/with\ spaces/in/them/ 

हालांकि, मैं नोड आरईपीएल में एक regex के साथ एक समस्या में चल रहा हूँ। जब मैं कार्य करें:

var path = '/path/with spaces/in/them/'; 
var escapedPath = path.replace(/(\s)/, "\\ "); 

मैं परिणाम के रूप में मिलती है:

'/path/with\\ spaces/in/them/' 

जब मैं क्रोम कंसोल के अंदर यह एक ही कोड चलाने की कोशिश मैं:

"/path/with\ spaces/in/them/" 

कौन सा वांछित है प्रभाव।

मुझे यकीन नहीं है कि मुझे कुछ याद आ रहा है या यदि यह एक बग है। मैं उलझन में हूं क्योंकि नोड उसी जावास्क्रिप्ट इंजन पर क्रोम के रूप में चलता है इसलिए मुझे लगता है कि इन अभिव्यक्तियों का अर्थ समान होगा।

अगर कोई इस बारे में जानने का तरीका जानता है तो कृपया मुझे बताएं। हो सकता है कि मुझसे कुछ छूट रहा हो। मुझे fs.readdir में पास करने से पहले पथ से बचने में सक्षम होना चाहिए ताकि मैं इन त्रुटियों से बच सकूं।

धन्यवाद!

+0

मेरे लिए 'fs.readdir' में एक बग की तरह लगता है की कोशिश करो। –

+0

वास्तविक परिणाम क्रोम और नोड.जे.एस. में समान हैं। अंतर यह है कि वे इसे कैसे दिखाते हैं। 'Node.js' में' console.log' जोड़ने का प्रयास करें और आप एक ही परिणाम देखेंगे। –

+0

अनचाहे तारों के लिए, 'एफएस।readFile' 'fs.readdir' के आउटपुट के साथ ठीक काम करता है। –

उत्तर

2

fs.readdir आपको पथ से बचने की आवश्यकता नहीं है। मैं बिना किसी समस्या के fs.readdir आउटपुट निर्देशिकाओं को fs.readdir में दोबारा पास करने में सक्षम था।

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

मैं अपने कोड में एक बग ढूंढना समाप्त कर दिया जो ट्रैक करने के लिए थोड़ा मुश्किल था। मैंने पहली बार सोचा था कि यह उस मार्ग से बचने से नहीं आया था जिसे मैं fs.readdir में भेज रहा था, लेकिन यह वास्तव में एक मुद्दा था जहां मैं fs.statfs.readdir का आउटपुट था और फिर जांच कर रहा था कि आउटपुट फ़ाइल या निर्देशिका थी और उसके अनुसार इसका इलाज कर रहा था।

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

अब यह ठीक काम कर रहा है!

0

या तो इस

var path = "'file:///Users/kevin/folder with space'"; 

या इस

var path = "\"file:///Users/kevin/folder with space\""; 
संबंधित मुद्दे