मुझे फ़ाइल के पूर्ण पथ से निर्देशिका कैसे मिल सकती है?


526

किसी फ़ाइल में निर्देशिका को प्राप्त करने का सबसे सरल तरीका क्या है? मैं एक कार्यशील निर्देशिका सेट करने के लिए इसका उपयोग कर रहा हूं।

string filename = @"C:\MyDirectory\MyFile.bat";

इस उदाहरण में, मुझे "C: \ MyDirectory" मिलना चाहिए।


3
नहीं होना चाहिए कि एक स्ट्रिंग शाब्दिक? @"C:\MyDirectory\MyFile.bat"
एडगर

3
क्या कोई इस सवाल की रक्षा करना चाहता है कि ऐसा करने का अधिकार किसके पास है? 2017 से आखिरी के साथ 11 समान उत्तर ..
बोर्न

जवाबों:


837

यदि आपको निश्चित रूप से एक पूर्ण मार्ग मिला है, तो उपयोग करें Path.GetDirectoryName(path)

यदि आपको केवल एक रिश्तेदार नाम मिल सकता है, तो उपयोग करें new FileInfo(path).Directory.FullName

ध्यान दें कि Pathऔर FileInfoदोनों नामस्थान में पाए जाते हैं System.IO


1
वास्तव में, लेकिन क्या गेटडायरेरी नामक एक विधि है? क्या यह GetDirectoryName नहीं है?
ब्रैंडन

1
आप सिर्फ DirectoryName का उपयोग कर सकते हैं इसके बजाय Directory.FullPath नहीं कर सकते हैं?
स्टीवन रॉबिंस

1
मैं एक रिश्तेदार नाम प्राप्त करने के खिलाफ सबूत दे रहा था। मैंने देखा नहीं था कि रास्ता निरपेक्ष होगा। मुझे अब दोनों संस्करण मिल गए हैं
जॉन स्कीट

क्या आप उस जांच के लिए स्निपी का उपयोग करते हैं? ;)
शकलकेश

1
@UlyssesAlves: मेरा मानना ​​है कि new FileInfo(path).Directory.FullNameकिसी भी मामले में काम करना चाहिए।
जॉन स्कीट



12

आप System.IO.Path.GetDirectory(filename)पथ का उपयोग कर सकते हैं , या पथ को मोड़ सकते हैं FileInfo, और उपयोग कर सकते हैं FileInfo.Directory

यदि आप पथ के साथ अन्य काम कर रहे हैं, FileInfoतो फायदे हो सकते हैं।


1
पथ कक्षा में कोई 'गेटडायरेक्टरी विधि नहीं है; आपके पास 'गेटडायरेरी नेम
बिल डब्ल्यू

12

फ़ोल्डर पथ प्राप्त करने के लिए नीचे दिए गए कोड का उपयोग करें

Path.GetDirectoryName(filename);

यह आपके मामले में "C: \ MyDirectory" लौटाएगा



5

यदि आप किसी FileInfoऑब्जेक्ट के साथ काम कर रहे हैं , तो संपत्ति के stringमाध्यम से निर्देशिका के पूर्ण पथ का प्रतिनिधित्व निकालने का एक आसान तरीका है DirectoryName

FileInfo.DirectoryNameMSDN के माध्यम से संपत्ति का विवरण :

निर्देशिका के पूर्ण पथ का प्रतिनिधित्व करने वाला एक स्ट्रिंग हो जाता है।

नमूना उपयोग:

string filename = @"C:\MyDirectory\MyFile.bat";
FileInfo fileInfo = new FileInfo(filename);
string directoryFullPath = fileInfo.DirectoryName; // contains "C:\MyDirectory"

MSDN प्रलेखन के लिए लिंक ।


5

आप वर्तमान एप्लिकेशन पथ का उपयोग कर प्राप्त कर सकते हैं:

string AssemblyPath = Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location).ToString();

शुभ लाभ!


0

सबसे पहले, आपको System.IO नाम स्थान का उपयोग करना होगा। फिर;

string filename = @"C:\MyDirectory\MyFile.bat";
string newPath = Path.GetFullPath(fileName);

या

string newPath = Path.GetFullPath(openFileDialog1.FileName));

0

आप Path.GetFullPathज्यादातर मामले के लिए उपयोग कर सकते हैं । लेकिन अगर आप फ़ाइल नाम के मामले में भी रास्ता पाना चाहते हैं, तो आप निम्न सामान्य विधि का उपयोग कर सकते हैं:

string GetPath(string filePath)
{
  return Path.GetDirectoryName(Path.GetFullPath(filePath))
}

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

GetPath("C:\Temp\Filename.txt") वापसी "C:\Temp\"

GetPath("Filename.txt")current working directoryजैसे लौट आए"C:\Temp\"


0

मेरे मामले में, मुझे एक पूर्ण पथ (निर्देशिका का) का निर्देशिका नाम खोजने की आवश्यकता थी, इसलिए मैंने बस किया:

var dirName = path.Split('\\').Last();

1
ओपी को जरूरत है "C:\MyDirectory"और नहीं MyDirectory। स्ट्रिंग हेरफेर विधियों का उपयोग करने की सलाह जोखिम भरा है, कई जाल हैं, बल्कि समर्पित Pathतरीकों का उपयोग करें ।
सिनत्र

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.