जांचें कि क्या कोई फ़ोल्डर किसी निर्देशिका में मौजूद है और C # का उपयोग करके उन्हें बनाते हैं


100

अगर निर्देशिका C:/में फ़ोल्डर का नाम है MP_Upload, और यदि यह मौजूद नहीं है, तो मैं कैसे जांच सकता हूं कि फ़ोल्डर स्वचालित रूप से बना है?

मैं Visual Studio 2005 C # का उपयोग कर रहा हूं।

जवाबों:


209

यह मदद करनी चाहिए:

using System.IO;
...

string path = @"C:\MP_Upload";
if(!Directory.Exists(path))
{
    Directory.CreateDirectory(path);
}

4
System.IO का उपयोग कर; शुरुआत में भी आवश्यक
fnc12

169
using System.IO;
...

Directory.CreateDirectory(@"C:\MP_Upload");

Directory.CreateDirectory वही करती है जो आप चाहते हैं: यह निर्देशिका बनाता है यदि यह अभी तक मौजूद नहीं है। पहले एक स्पष्ट जाँच करने की कोई आवश्यकता नहीं है।

पथ में निर्दिष्ट कोई भी और सभी निर्देशिका तब तक बनाई जाती हैं, जब तक कि वे पहले से मौजूद न हों या जब तक कि पथ का कुछ हिस्सा अमान्य न हो। पथ पैरामीटर निर्देशिका पथ निर्दिष्ट करता है, न कि फ़ाइल पथ। यदि निर्देशिका पहले से मौजूद है, तो यह विधि कुछ भी नहीं करती है।

(इसका मतलब यह भी है कि यदि आवश्यक हो तो पथ के सभी निर्देशिकाएं बनाई जाती हैं: CreateDirectory(@"C:\a\b\c\d")पर्याप्त है, भले ही C:\aअभी तक मौजूद नहीं है।)


मुझे अपनी पसंद की निर्देशिका के बारे में सावधानी से एक शब्द जोड़ने दें, हालाँकि: सिस्टम विभाजन रूट के ठीक नीचे एक फ़ोल्डर बनाना C:\उस पर आधारित है। उपयोगकर्ता को एक फ़ोल्डर चुनने %APPDATA%या उसके %LOCALAPPDATA%बजाय एक फ़ोल्डर बनाने पर विचार करने के लिए ( पर्यावरण का उपयोग करें । उसके लिए फ़ोल्डर फ़ोल्डर )। Environment.SpecialFolder गणन का MSDN पृष्ठ विशेष ऑपरेटिंग सिस्टम फ़ोल्डर्स और उनके उद्देश्यों की एक सूची शामिल करता है।


4
मुझे नहीं पता था कि मैं खुद; मैं शर्मिंदा हूँ; मैं कर रहा हूँ अगर नहीं-तो-मौजूद-फिर वर्षों के लिए बना।

10
यह कई अन्य धागों पर आया है। भले ही आपको जांचने की आवश्यकता न हो, लेकिन यह किसी बाहरी व्यक्ति के लिए कोड की मंशा को अधिक स्पष्ट, पठनीयता के रूप में बढ़ाता है। इसलिए चेक रखना अच्छी बात हो सकती है।
मैट जे।

6
@MattJ .: उस मामले में, मैं एक बेकार फ़ंक्शन कॉल की तुलना में एक छोटी टिप्पणी जोड़ना चाहूंगा। मैं मानता हूं कि यह व्यवहार स्पष्ट नहीं है, लेकिन, दूसरी ओर, इसका नामकरण (अधिक उपयुक्त) EnsureDirectoryExistsने विधि को खोजने के लिए कठिन बना दिया होगा।
हीनज़ी

3
एक नोट के कुछ: Directory.CreateDirectoryअगर फ़ोल्डर का नाम एक मौजूदा फ़ाइल नाम से मेल खाता है तो फेंक देगा।
रेजा एम।

11
if(!System.IO.Directory.Exists(@"c:\mp_upload"))
{
     System.IO.Directory.CreateDirectory(@"c:\mp_upload");
}

1
हां, निश्चित रूप से, मैं थोड़ा अनुमान लगा रहा था। जो हर छोटे तरीके के नाम को याद करने की कोशिश कर रहा है ... और मैं वीएस को आग देने के लिए आलसी था ... इस बात का मतलब - मेरे लिए - विचारों को देकर पूछने वाले की मदद करना है; बदल दिया है: अगर वे इन सभी छोटी चीजें अनुकूल कॉपी-पेस्ट होने की उम्मीद है, तो ... उन्हें लगता है एक छोटे से, भी, सही है ... सही किया है Createकरने के लिए CreateDirectory:)

6

यह काम करना चाहिए

if(!Directory.Exists(@"C:\MP_Upload")) {
    Directory.CreateDirectory(@"C:\MP_Upload");
}

1
using System;
using System.IO;
using System.Windows.Forms;

namespace DirCombination 
{
    public partial class DirCombination : Form
    {
        private const string _Path = @"D:/folder1/foler2/folfer3/folder4/file.txt";
        private string _finalPath = null;
        private string _error = null;

        public DirCombination()
        {
            InitializeComponent();

            if (!FSParse(_Path))
                Console.WriteLine(_error);
            else
                Console.WriteLine(_finalPath);
        }

        private bool FSParse(string path)
        {
            try
            {
                string[] Splited = path.Replace(@"//", @"/").Replace(@"\\", @"/").Replace(@"\", "/").Split(':');
                string NewPath = Splited[0] + ":";
                if (Directory.Exists(NewPath))
                {                    
                    string[] Paths = Splited[1].Substring(1).Split('/');

                    for (int i = 0; i < Paths.Length - 1; i++)
                    {
                        NewPath += "/";
                        if (!string.IsNullOrEmpty(Paths[i]))
                        {
                            NewPath += Paths[i];
                            if (!Directory.Exists(NewPath))
                                Directory.CreateDirectory(NewPath);
                        }
                    }

                    if (!string.IsNullOrEmpty(Paths[Paths.Length - 1]))
                    {
                        NewPath += "/" + Paths[Paths.Length - 1];
                        if (!File.Exists(NewPath))
                            File.Create(NewPath);
                    }
                    _finalPath = NewPath;
                    return true;
                }
                else
                {
                    _error = "Drive is not exists!";
                    return false;
                }
            }
            catch (Exception ex)
            {
                _error = ex.Message;
                return false;
            }
        }
    }
}


0

आप यह कोशिश कर सकते हैं ..

using System.IO;string path = "C:\MP_Upload";if(!Directory.Exists(path)){
   Directory.CreateDirectory(path);}

यह खराब फॉर्मेटिंग के साथ स्वीकृत उत्तर की एक सीधी कॉपी है, यह एसओ में सुधार कैसे माना जाता है?
तारिक वेलिंग
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.