किसी फ़ाइल में निर्देशिका को प्राप्त करने का सबसे सरल तरीका क्या है? मैं एक कार्यशील निर्देशिका सेट करने के लिए इसका उपयोग कर रहा हूं।
string filename = @"C:\MyDirectory\MyFile.bat";
इस उदाहरण में, मुझे "C: \ MyDirectory" मिलना चाहिए।
किसी फ़ाइल में निर्देशिका को प्राप्त करने का सबसे सरल तरीका क्या है? मैं एक कार्यशील निर्देशिका सेट करने के लिए इसका उपयोग कर रहा हूं।
string filename = @"C:\MyDirectory\MyFile.bat";
इस उदाहरण में, मुझे "C: \ MyDirectory" मिलना चाहिए।
जवाबों:
यदि आपको निश्चित रूप से एक पूर्ण मार्ग मिला है, तो उपयोग करें Path.GetDirectoryName(path)।
यदि आपको केवल एक रिश्तेदार नाम मिल सकता है, तो उपयोग करें new FileInfo(path).Directory.FullName।
ध्यान दें कि Pathऔर FileInfoदोनों नामस्थान में पाए जाते हैं System.IO।
new FileInfo(path).Directory.FullNameकिसी भी मामले में काम करना चाहिए।
आप System.IO.Path.GetDirectory(filename)पथ का उपयोग कर सकते हैं , या पथ को मोड़ सकते हैं FileInfo, और उपयोग कर सकते हैं FileInfo.Directory।
यदि आप पथ के साथ अन्य काम कर रहे हैं, FileInfoतो फायदे हो सकते हैं।
यदि आप किसी FileInfoऑब्जेक्ट के साथ काम कर रहे हैं , तो संपत्ति के stringमाध्यम से निर्देशिका के पूर्ण पथ का प्रतिनिधित्व निकालने का एक आसान तरीका है DirectoryName।
FileInfo.DirectoryNameMSDN के माध्यम से संपत्ति का विवरण :
निर्देशिका के पूर्ण पथ का प्रतिनिधित्व करने वाला एक स्ट्रिंग हो जाता है।
नमूना उपयोग:
string filename = @"C:\MyDirectory\MyFile.bat";
FileInfo fileInfo = new FileInfo(filename);
string directoryFullPath = fileInfo.DirectoryName; // contains "C:\MyDirectory"
MSDN प्रलेखन के लिए लिंक ।
आप वर्तमान एप्लिकेशन पथ का उपयोग कर प्राप्त कर सकते हैं:
string AssemblyPath = Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location).ToString();
शुभ लाभ!
आप 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\"
मेरे मामले में, मुझे एक पूर्ण पथ (निर्देशिका का) का निर्देशिका नाम खोजने की आवश्यकता थी, इसलिए मैंने बस किया:
var dirName = path.Split('\\').Last();
"C:\MyDirectory"और नहीं MyDirectory। स्ट्रिंग हेरफेर विधियों का उपयोग करने की सलाह जोखिम भरा है, कई जाल हैं, बल्कि समर्पित Pathतरीकों का उपयोग करें ।
@"C:\MyDirectory\MyFile.bat"