Java.io.File [बंद] के लिए जावा में mkdir () और mkdirs () के बीच अंतर


123

क्या कोई मुझे इन दो तरीकों के बीच का अंतर बता सकता है:

  • file.mkdir()
  • file.mkdirs()

23
जावदोक पढ़ें: mkdir बनाम mkdirs
assylias

2
यह करने के लिए नए रास्ते Files.createDirectories और Files.createDirectory स्थिर तरीकों का उपयोग कर रहा है: docs.oracle.com/javase/7/docs/api/java/nio/file/Files.html
नेवेस

आप mkdir का उपयोग करने के बाद "फ़ाइल समर्थित नहीं" प्राप्त कर सकते हैं।
user7856586

क्या दोनों के बीच कोई प्रदर्शन अंतर है? खासकर जब माता-पिता निर्देशिका पहले से मौजूद हैं?
जोशुआ पिन्टर

जवाबों:


158

mkdirs()यह प्रतिनिधित्व करने वाले मार्ग में मूल निर्देशिका भी बनाता है File

javadocs के लिए mkdirs():

इस सार पथ नाम से निर्देशिका बनाता है, जिसमें किसी भी आवश्यक लेकिन कोई भी मूल माता-पिता की निर्देशिका शामिल नहीं है। ध्यान दें कि यदि यह ऑपरेशन विफल हो जाता है, तो यह कुछ आवश्यक मूल निर्देशिका बनाने में सफल हो सकता है।

javadocs के लिए mkdir():

इस अमूर्त pathname द्वारा नामित निर्देशिका बनाता है।

उदाहरण:

File  f = new File("non_existing_dir/someDir");
System.out.println(f.mkdir());
System.out.println(f.mkdirs());

falseपहले [और कोई dir नहीं बनाया जाएगा] के लिए उपज होगा, और trueदूसरे के लिए, और आपने बनाया होगाnon_existing_dir/someDir


7
क्योंकि oracle इंटरनेट में फिर से लिंक तोड़ रहा है: mkdirs () और mkdir ()
MyPasswordIsLasercats

@MyPasswordIsLasercats मुझे बताने के लिए धन्यवाद। तय की।
अमित

1
यदि निर्देशिका पहले से मौजूद है, तो mkdir()वापस आती है trueया false? इस पहलू को कवर करने के लिए javadoc प्रतीत नहीं होता है।
अरुण

@Arun, Javadoc के अनुसार यह "सही है और केवल अगर निर्देशिका बनाई गई थी", जो मुझे लगता है कि यह इस कॉल या पहले के द्वारा बनाई गई थी के रूप में अस्पष्ट है रिटर्न। यह उत्तर पूर्व को दर्शाता है।
शमूएल एडविन वार्ड

mkdir और mkdirs दोनों मेरे मामले में झूठे हैं। यह काम करता है अगर मैं डबल बैकस्लैश "\\" बटन का उपयोग करता हूं: अगर मैं प्राप्त करता हूं तो ".toURI ()": मैं प्राप्त करता हूं: फ़ाइल: / उपयोगकर्ता / MyName / डेस्कटॉप /% 5Cnon_existing_dir% 5xomeDir / और यदि मैं करता हूं ".getPath () "मैं प्राप्त" \ non_existing_dir \ someDir "और अगर मैं ऐसा" .getCanonicalPath () "मैं प्राप्त / उपयोगकर्ताओं / MyName / डेस्कटॉप / \ non_existing_dir \ someDir
Aerox

62

mkdirs()अपनी संपूर्णता में निर्दिष्ट निर्देशिका पथ बनाएगा, जहां mkdir()केवल सबसे नीचे निर्देशिका बनाई जाएगी, यदि यह उस निर्देशिका के मूल निर्देशिका को नहीं पा सकता है जिसे वह बनाने का प्रयास कर रहा है।

दूसरे शब्दों mkdir()में जैसा है mkdirऔर mkdirs()जैसा है mkdir -p

उदाहरण के लिए, कल्पना करें कि हमारे पास एक खाली /tmpनिर्देशिका है। निम्नलिखित कोड

new File("/tmp/one/two/three").mkdirs();

निम्नलिखित निर्देशिका बनाएंगे:

  • /tmp/one
  • /tmp/one/two
  • /tmp/one/two/three

यह कोड कहां है:

new File("/tmp/one/two/three").mkdir();

कोई निर्देशिका नहीं बनाएगा - क्योंकि यह नहीं मिलेगी /tmp/one/two- और वापस आ जाएगी false


4
mkdir()

एक समय में केवल एक निर्देशिका बनाता है, अगर यह माता-पिता है कि केवल एक। अन्य बुद्धिमान यह उप निर्देशिका बना सकते हैं (यदि निर्दिष्ट पथ केवल मौजूद है) और किसी भी दो निर्देशिकाओं के बीच कोई निर्देशिका नहीं बनाते हैं। इसलिए यह एक निर्देशिका में smultiple निर्देशिका नहीं बना सकता है

mkdirs()

एक समय में कई निर्देशिकाएं (दो निर्देशिकाओं के बीच भी) बनाएं।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.