OpenFileDialog पथ / फ़ाइल नाम से पथ निकालना


81

मैं एक छोटी सी उपयोगिता लिख ​​रहा हूं जो एक फ़ाइल को चुनने के साथ शुरू होती है, और फिर मुझे एक फ़ोल्डर का चयन करने की आवश्यकता होती है। मैं उस फ़ोल्डर को डिफ़ॉल्ट करना चाहूंगा जहां चयनित फ़ाइल थी।

OpenFileDialog.FileNameपूर्ण पथ और फ़ाइल नाम लौटाता है - जो मैं चाहता हूं वह केवल पथ भाग (sans फ़ाइल नाम) प्राप्त करना है , इसलिए मैं इसे प्रारंभिक चयनित फ़ोल्डर के रूप में उपयोग कर सकता हूं ।

    private System.Windows.Forms.OpenFileDialog ofd;
    private System.Windows.Forms.FolderBrowserDialog fbd;
    ...
    if (ofd.ShowDialog() == DialogResult.OK)
    {
        string sourceFile = ofd.FileName;
        string sourceFolder = ???;
    }
    ...
    fbd.SelectedPath = sourceFolder; // set initial fbd.ShowDialog() folder
    if (fbd.ShowDialog() == DialogResult.OK)
    {
       ...
    }

क्या ऐसा करने के लिए कोई .NET तरीके हैं, या क्या मुझे इसका उपयोग करने की आवश्यकता है regex, split, trim,आदि ??

जवाबों:


114

से Pathकक्षा का उपयोग करें System.IO। इसमें फ़ाइल पथों में हेरफेर करने के लिए उपयोगी कॉल शामिल हैं, GetDirectoryNameजिसमें वह है जो आप चाहते हैं, फ़ाइल पथ के निर्देशिका भाग को वापस करना।

उपयोग सरल है।

string directoryPath = Path.GetDirectoryName(filePath);

4
धन्यवाद - इसका सरल उत्तर होना था। स्वयं पर ध्यान दें: आधी रात के बाद कोडिंग की सिफारिश नहीं की जाती है। केवल विधि के प्रोटोटाइप से अधिक पढ़ना भी मदद करता है, क्योंकि वीएस प्रलेखन सार्वजनिक स्थैतिक स्ट्रिंग गेटडायरेरीनाम (स्ट्रिंग पथ) के रूप में सूचीबद्ध करता है और मैंने पैरामीटर की गलत व्याख्या की है।
केविन हेन्स

29

इस बारे में कैसा है:

string fullPath = ofd.FileName;
string fileName = ofd.SafeFileName;
string path = fullPath.Replace(fileName, "");

18
if (openFileDialog1.ShowDialog(this) == DialogResult.OK)
{
    strfilename = openFileDialog1.InitialDirectory + openFileDialog1.FileName;
}

2
जब उपयोगकर्ता किसी फ़ाइल का चयन करता है तो प्रारंभिक निर्देशिका बदल जाती है? यदि नहीं, तो यह दृष्टिकोण उपयोगकर्ता की निर्देशिका बदलने पर समस्या पैदा करेगा। इसके अलावा, मुझे नहीं लगता कि वह FileNameउसके हिस्से के रूप में चाहता था sourceFolder
ब्रायन जे

7

आप FileDialog के बजाय FolderBrowserDialog का उपयोग कर सकते हैं और ठीक परिणाम से पथ प्राप्त कर सकते हैं।

FolderBrowserDialog browser = new FolderBrowserDialog();
string tempPath ="";

if (browser.ShowDialog() == DialogResult.OK)
{
  tempPath  = browser.SelectedPath; // prints path
}

1
तो पहले फाइल चुनें और फिर उस पर नेविगेट करें और फोल्डर चुनें ??
18

0

यहाँ यह करने के लिए सरल तरीका है!

string fullPath =openFileDialog1.FileName;
string directory;
directory = fullPath.Substring(0, fullPath.LastIndexOf('\\'));
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.