2012-12-19 34 views
5

मैं निम्नलिखित कोड का उपयोग की फ़ाइल बना रहे:File.mkdir() और mkdirs() के बजाय निर्देशिका

final File newFile = new File("/mnt/sdcard/test/"); 
newFile.mkdir(); // if I use mkdirs() result is the same 

और यह एक खाली फ़ाइल बनाता है! क्यूं कर?

+0

हैं आप निश्चित रूप से, यह एक खाली फाइल है? – ariefbayu

+0

---- rwxr-x सिस्टम sdcard_rw 9873 – arts777

+0

बिल्ली/mnt/sdcard/test ->/mnt/sdcard/test: अमान्य लंबाई – arts777

उत्तर

13

आप mkdirs() का उपयोग नहीं करेंगे जबतक कि आप संरचना में बनाए गए प्रत्येक फ़ोल्डर को नहीं चाहते थे। अपनी स्ट्रिंग के अंत में अतिरिक्त स्लैश जोड़ने का प्रयास न करें और देखें कि क्या यह काम करता है।

उदाहरण

final File newFile = new File("/mnt/sdcard/test"); 
newFile.mkdir(); 
+2

मैंने अंत में 2 स्लेश के साथ प्रयास किया है, और यह काम करता है, धन्यवाद! – arts777

+0

कोई "/ mnt/sdcard" नहीं है जो सभी एंड्रॉइड डिवाइस (किटकैट) पर वास्तविक एसडीकार्ड को इंगित करता है। मैंने "/ स्टोरेज/बाहरी_SD/एंड्रॉइड/डेटा//files/dummy //" के साथ अंत में दो स्लेश चाल की कोशिश की और अब यह एक निर्देशिका फाइलें बनाता है जो विंडोज पर दिखाई दे रही है, लेकिन डमी अभी भी एक है फ़ाइल। ES3 दोनों निर्देशिकाएं हैं। मेरे लिए काफी अच्छा :)) – Zekitez

0

कोशिश सभी की

String rootPath=Environment.getExternalStorageDirectory().getAbsolutePath()+"/test/"; 
      File file=new File(rootPath); 
if(!file.exists()){ 
file.mkdirs(); 
} 
0

सबसे पहले उपयोग करने के लिए आप "/ mnt/sdcard/परीक्षण" के साथ एक फ़ाइल पथ का उपयोग नहीं करना चाहिए के लिए, इस के साथ कुछ समस्याएं पैदा हो सकती कुछ एंड्रॉइड फोन। इसके बजाए उपयोग करें:

public final static String APP_PATH_SD_CARD = "/Test"; 

String fullPath = Environment.getExternalStorageDirectory().getAbsolutePath() + APP_PATH_SD_CARD; 

यह डैश जोड़ने के बाद से एक खाली फ़ाइल बनाता है।

अब आप अपने मार्ग का अनुसरण कोड का उपयोग किया है:

try { 
    File dir = new File(fullPath); 
    if (!dir.exists()) { 
     dir.mkdirs(); 
    } 
} 
catch(Exception e){ 
    Log.w("creating file error", e.toString()); 
} 
+0

>> सबसे पहले आपको "/ mnt/sdcard/test" के साथ फ़ाइल पथ का उपयोग नहीं करना चाहिए >> यह ठीक है, क्योंकि यह उदाहरण कोड है। वास्तव में, यह फ़ाइल प्रबंधक का हिस्सा है और मैं उपयोगकर्ता द्वारा परिभाषित पथ के साथ निर्देशिका बनाने की कोशिश कर रहा हूं। इसलिए, मैं वास्तविक कोड में हार्डकोडेड "/ mnt/sdcard /" पथ का उपयोग नहीं करता हूं। – arts777

+0

उस मामले में काफी उचित है। – Max

7

जब मैं सुनिश्चित करना है कि एक फ़ाइल के लिए सभी dirs मौजूद जरूरत है, लेकिन मैं केवल filepath है - मैं करना

new File(FileName.substring(0,FileName.lastIndexOf("/"))).mkdirs();