2011-08-03 14 views
12

मैं निम्न आदेश है: हालांकियह पथ क्यों नहीं होगा। कॉम्बाइन काम करते हैं?

reportedContentFolderPath = "\\ReportedContent\\" 

क्यों Path.Combine ई बंद काटना है

contentFolder.FullName = "E:\\" 

:

string reportedContentFolderPath = 
Path.Combine(contentFolder.FullName.ToString(), @"\ReportedContent\"); 

जब मैं डीबगर में देखने के लिए मैं निम्नलिखित देख सकते हैं : \?

+2

'ReportContentFolderPath' – Mrchief

+1

पर स्लैश के बिना इसे आज़माएं इस पिछले उत्तर को देखें, http://stackoverflow.com/questions/53102/why-does-path-combine-not-properly-concatenate-filenames-that-start- साथ-पथ-निर्देशिका –

उत्तर

27

आपके पास @"\ReportedContent\" पर एक प्रमुख स्लैश है। आपको लगता है कि नहीं चाहते हैं (या पीछे एक, मुझे लगता है) - बस कोशिश:

string reportedContentFolderPath = 
    Path.Combine(contentFolder.FullName.ToString(), "ReportedContent"); 

से the documentation: उदाहरण के लिए

तो path2 एक रूट शामिल नहीं है (अगर path2 नहीं है एक विभाजक चरित्र या ड्राइव विनिर्देश के साथ शुरू करें), परिणाम एक मध्यवर्ती विभाजक चरित्र के साथ, दो पथों का एक संयोजन है। यदि path2 में रूट शामिल है, तो path2 वापस आ गया है।

आपके मामले में, path2 एक रूट को शामिल किया था, तो यह path1 को देखे बिना वापस आ गया था।

6

पथ। कॉम्बिन दूसरे तर्क को वापस कर देगा यदि यह एक पृथक्करण चरित्र (\) से शुरू होता है।

3

मैं शर्त लगाता हूं कि दूसरी स्ट्रिंग में उपसर्ग के रूप में स्लैश निर्दिष्ट करके, संयोजन विधि वर्तमान ड्राइव मानती है। स्लैश को हटाने का प्रयास करें।

7

यह विधि दस्तावेज में समझाया गया है:

Path2 एक रूट शामिल नहीं है (उदाहरण के लिए, अगर Path2 एक विभाजक वर्ण या एक ड्राइव विनिर्देशन के साथ शुरू नहीं करता है), परिणाम के एक संयोजन है दो मार्ग, एक हस्तक्षेप विभाजक चरित्र के साथ। यदि पथ 2 में रूट शामिल है, तो पथ 2 वापस कर दिया गया है।

मैं सुझाव है कि आप यह सब पढ़ को समझने के लिए सभी संभव संयोजनों बाहर काम: Path.Combine Method

1

यह Path.Combine तरह लग रहा है सोचता है कि दो स्लैश E:\\ एक यूएनसी पथ को संदर्भित करता है, और एक यूएनसी पथ नहीं करना चाहिए एक ड्राइव अक्षर के साथ prefixed हो। सामग्री को बदलें E:\ पर फ़ोल्डर और इसे काम करना चाहिए।

1

MSDN (जोर मेरा) से:

public static string Combine(string path1, string path2) 

[...]

वापसी मूल्य

प्रकार: संयुक्त रास्तों System.String। यदि निर्दिष्ट पथों में से एक शून्य-लंबाई स्ट्रिंग है, तो यह विधि अन्य पथ लौटाती है।यदि path2 में एक पूर्ण पथ है, तो यह विधि path2 लौटाती है।

@"\ReportedContent\" एक पूर्ण पथ है क्योंकि यह बैकस्लैश से शुरू होता है।

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