अगर मैं एक स्ट्रिंग चर है कि है:पार्स निर्देशिका का नाम
"C:\temp\temp2\foo\bar.txt"
और मैं प्राप्त करना चाहते हैं
"foo"
सबसे अच्छा है क्या ऐसा करने का तरीका?
अगर मैं एक स्ट्रिंग चर है कि है:पार्स निर्देशिका का नाम
"C:\temp\temp2\foo\bar.txt"
और मैं प्राप्त करना चाहते हैं
"foo"
सबसे अच्छा है क्या ऐसा करने का तरीका?
उपयोग: मुझे स्कीट से सहमत नहीं के लिए
new FileInfo(@"C:\temp\temp2\foo\bar.txt").Directory.Name
सुदूर यह हो, लेकिन मैं हमेशा
Path.GetFileNameWithoutExtension(@"C:\temp\temp2\foo\bar.txt")
का उपयोग किया है मुझे लगता है कि वास्तव में FileInfo फाइल सिस्टम को छू लेती है यह जानकारी है पाने के लिए , जहां मैं उम्मीद करता हूं कि GetFileNameWithoutExtension केवल स्ट्रिंग ऑपरेशंस है - इसलिए दूसरे पर एक का प्रदर्शन बेहतर हो सकता है।
यहां परिणामों में थोड़ा अंतर है ... मुझे लगता है कि आपका दृष्टिकोण "बार" देता है जब सवाल पूछता है कि फ़ाइल की निर्देशिका में "foo" कैसे प्राप्त करें ... –
मैंने आज दो चीजें सीखी हैं ... प्रश्न पढ़ें और स्कीट से कभी असहमत न हों। – Handleman
पथ नहीं है .getDirectoryName वही करता है जो वह चाहता है? –
मैं एक अवसर था जब मैं माता-पिता बच्चे को निर्देशिका
string[] years = Directory.GetDirectories(ROOT);
foreach (var year in years)
{
DirectoryInfo info = new DirectoryInfo(year);
Console.WriteLine(info.Name);
Console.WriteLine(year);
//Month directories
string[] months = Directory.GetDirectories(year);
foreach (var month in months)
{
Console.WriteLine(month);
//Day directories
string[] days = Directory.GetDirectories(month);
foreach (var day in days)
{
//checkes the files in the days
Console.WriteLine(day);
string[] files = Directory.GetFiles(day);
foreach (var file in files)
{
Console.WriteLine(file);
}
}
}
}
के माध्यम से पाशन था इस लाइन मैं केवल वर्तमान निर्देशिका नाम
DirectoryInfo info = new DirectoryInfo(year);
Console.WriteLine(info.Name);
+1 मैं लगभग बिल्कुल वही कर रहा हूं ... – SMUsamaShah
प्राप्त करने में सक्षम था का उपयोग कर यह आप कैसे पर निर्भर करता हूँ डेटा को संभालना चाहते हैं, लेकिन स्ट्रिंग का उपयोग करने का दूसरा विकल्प है। स्प्लिट।
string myStr = @"C:\foo\bar.txt";
string[] paths = myStr.Split('\\');
string dir = paths[paths.Length - 2]; //returns "foo"
यह सीमा अपवाद से बाहर एक सरणी की जांच नहीं करता है, लेकिन आप विचार मिलता है।
मुझे लगता है कि सबसे सरल उपाय Handleman के सुझाव पर
DirectoryInfo dinfo = new DirectoryInfo(path); string folderName= dinfo.Parent.Name;
बिल्डिंग है, तो आप कर सकते हैं:
Path.GetFileName(Path.GetDirectoryName(path))
इस फाइल सिस्टम स्पर्श नहीं करता है (FileInfo
के विपरीत), और क्या आवश्यक है क्या करेंगे । पथ का अंतिम निर्देशिका चरित्र के बाद वर्ण: यह फ़ोल्डरों के साथ काम करेंगे, क्योंकि MSDN कहते हैं:
वापसी मान। यदि अंतिम पथ का चरित्र निर्देशिका या वॉल्यूम विभाजक चरित्र है, तो यह विधि स्ट्रिंग। लक्षण देता है। यदि पथ शून्य है, तो यह विधि शून्य देता है।
इसके अलावा, reference source को देखकर पुष्टि करता है कि GetFilename
परवाह नहीं करता है, तो रास्ते में पारित कर दिया एक फ़ाइल या फ़ोल्डर है: यह सिर्फ शुद्ध स्ट्रिंग परिवर्तन कर रहा है।
http://msdn.microsoft.com/en-us/library/system.io.fileinfo.fileinfo.aspx के अनुसार फ़ाइलइन्फो कन्स्ट्रक्टर फेंक सकता है अगर कॉलर के पास आवश्यक अनुमति नहीं है। क्या कोई विकल्प है जो बिना किसी आईओ के स्ट्रिंग को पार्स करेगा? – GuiSim
@ गुईसिम: ऐसा नहीं है कि मुझे पता है। –
यदि किसी को पूर्ण निर्देशिका पथ की आवश्यकता है, तो 'new FileInfo (@" C: \ temp \ temp2 \ foo \ bar.txt ") का उपयोग करें। निर्देशिका नाम 'इसके बजाय। –