किसी फ़ाइल में निर्देशिका को प्राप्त करने का सबसे सरल तरीका क्या है? मैं एक कार्यशील निर्देशिका सेट करने के लिए इसका उपयोग कर रहा हूं।
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.DirectoryName
MSDN के माध्यम से संपत्ति का विवरण :
निर्देशिका के पूर्ण पथ का प्रतिनिधित्व करने वाला एक स्ट्रिंग हो जाता है।
नमूना उपयोग:
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"