मेरे आश्चर्य करने के लिए, इस कोड की उम्मीद परिणामों का उत्पादन नहीं करता:पथ। कॉम्बिन इस परिणाम को सापेक्ष पथ के साथ क्यों उत्पन्न करता है?
var basePath = @"\\server\BaseFolder";
var relativePath = @"\My\Relative\Folder";
var combinedPath = Path.Combine(basePath, relativePath);
परिणाम की उम्मीद \\server\BaseFolder\My\Relative\Folder
के बजाय \My\Relative\Folder
है।
यह क्यों है? उन सापेक्ष पथों को गठबंधन करने का सबसे अच्छा तरीका क्या है जो उनमें स्लैश हो या न हो?
संपादित करें: मुझे पता है कि मैं सिर्फ relativePath पर स्ट्रिंग परिवर्तन कर पता लगाने और एक शुरू करने स्लेश दूर करने के लिए कर सकते हैं। क्या ऐसा करने का कोई सुरक्षित तरीका है (मैंने सोचा था कि Path.Combine
सुरक्षित तरीका माना जाता था) जो बैकस्लाश और मोर्चबॉश के लिए जिम्मेदार होगा?
यह _relative_ पथ नहीं है। – SLaks
मैं समझूंगा कि अगर फ्रंट पर 2 बैकस्लैश थे, तो इसे यूएनसी पथ बनाते हुए, लेकिन एक स्लैश? गंभीरता से? – Brandon
हां; गंभीरता से। '\ a \ b' एक ** पूर्ण ** पथ है। (हालांकि यह ड्राइव के सापेक्ष है) – SLaks