सुरक्षा/अनुमतियाँ एक कारण है, तो क्यों SecurityException फेंक नहीं है (जो जावाडोक में बताया गया है)?
एक SecurityException
आप कुछ, नहीं ओएस-स्तर
कि गलत लौटने का कारण है कि सही कारण पता लगाने के लिए एक रास्ता है करने के लिए JVM स्तरीय अनुमति नहीं है जब फेंक दिया जाता है?
नहीं, AFAIK। जानने का एकमात्र तरीका निर्देशिका पर अनुमतियों को जांचना होगा, सुनिश्चित करें कि यह उन्हें कॉल करने से पहले मौजूद नहीं है, जांचें कि क्या मूल निर्देशिका मौजूद है, आदि।
हालांकि, यदि आप जावा 7 का उपयोग कर रहे हैं या उच्च, आप निर्देशिका बनाने के लिए एनआईओ का उपयोग कर सकते हैं। विशेष रूप से, Files.createDirectory
:
File dir = new File("mydir");
Files.createDirectory(dir.toPath());
आप पूरी तरह से java.io.File
उपयोग करने के साथ NIO का उपयोग करना चाहते हैं, तो आप Paths.get
एक Path
बजाय बनाने के लिए उपयोग कर सकते हैं:
Path dir = Paths.get("mydir");
Files.createDirectory(dir);
दोनों ही मामलों में, अगर निर्देशिका नहीं किया जा सकता बनाया गया, यह एक IOException
फेंक देगा क्योंकि ऑपरेशन विफल क्यों हुआ।
Files
में अधिकांश विधियों के लिए यह सच है, और इसलिए इसका उपयोग File
कक्षा में विधियों का उपयोग करने के लिए किया जाता है।
"mkdir" के साथ, यदि आप mkdir ("/ path1/path2 /") की कोशिश कर रहे हैं; और पथ 1 (पैरेंट) फ़ोल्डर कमांड निष्पादित करने से पहले अस्तित्व में नहीं था, mkdir विफल हो जाएगा, यह केवल एक मौजूदा फ़ोल्डर के अंदर एक नया फ़ोल्डर बना सकता है, mkdirs सभी फ़ोल्डर्स - पथ 1 और पथ 2 बना सकते हैं। मुझे mkdirs की विफलता के साथ कोई सुराग नहीं है। उम्मीद है कि यह – Andiana
@Andiana सही मदद करें। ऐसा इसलिए है क्योंकि जावा की 'File.mkdir' विंडोज सम्मेलनों के बजाय लिनक्स सम्मेलनों का पालन करती है, और यह मध्यवर्ती निर्देशिका नहीं बनाती है। 'File.mkdirs' विंडोज सम्मेलनों का पालन करता है, और यह लिनक्स में' mkdir --parents' जैसा व्यवहार करता है। अच्छी बात। फिर भी, सटीक कारण प्राप्त करने के लिए, नीचे माइकल का उत्तर सबसे अच्छा है: जावा के एनआईओ पैकेज का उपयोग करें। – Brian