2012-07-12 19 views
9

मैं फ़ोल्डर से फ़ाइलों को हटाने के लिए कोड का एक विशिष्ट टुकड़ा उपयोग कर रहा हूं लेकिन यह बहुत ही समस्याग्रस्त साबित हो रहा है क्योंकि शायद मैं इनपुट इनपुट या दो बंद करना भूल गया था। मेरे पास जो कोड है वह इतना बड़ा है कि मैं उन सभी इनपुटस्ट्रीम को देखने में सक्षम नहीं हूं जिन्हें मैंने बंद नहीं किया है। क्या फ़ाइलों को हटाने का कोई तरीका है कि कोई खुला इनपुटस्ट्रीम है या नहीं?बल फ़ोल्डर से सभी फ़ाइलों को हटाएं

इस कोड है कि मैं का उपयोग कर रहे हैं का टुकड़ा है,

File fin = new File("C:/ABC Statements final/"); 
    File[] finlist = fin.listFiles();  
    for (int n = 0; n < finlist.length; n++) { 
     if (finlist[n].isFile()) { 
     System.gc(); 
     Thread.sleep(2000); 
      finlist[n].delete(); 
     } 
    }   

मैंने कोड संपादित किया है। यह संस्करण काम करता है।

+1

मेरा सुझाव था कि लघु जवाब नहीं है। आपको अपनी बेहतर देखभाल करनी चाहिए। – MadProgrammer

+0

तब मुझे कहना चाहिए कि मैं हर इंस्ट्रीम के माध्यम से चला गया हूं कोड में है और मैंने उनमें से बहुत सारे बंद कर दिए हैं लेकिन मुझे अभी भी एक ही त्रुटि – ErrorNotFoundException

+0

2 विचार मिल गई है। कुछ, कुछ जहां फ़ाइल खोल रही है और/या वहां कोई अनुमति समस्या है – MadProgrammer

उत्तर

15

कोड के प्रदत्त खंड में कोई इनपुटस्ट्रीम उदाहरण नहीं है।

अनचाहे आईओ कोड के बहुत सारे लिखने के लिए, कृपया apache.commons.io प्रोजेक्ट पर एक नज़र डालें। फाइल हटाना संचालन के लिए विशेष रूप से FileDeleteStrategy कक्षा में।

आपका कोड है कि ऐसा दिखाई देगा:

File fin = new File("C:/ABC Statements final/"); 

for (File file : fin.listFiles()) { 
    FileDeleteStrategy.FORCE.delete(file); 
} 
+0

थ्रेड "मुख्य" java.io.IOException में अपवाद: फ़ाइल को हटाने में असमर्थ: सी: \ एबीसी स्टेटमेंट अंतिम \ STATEment0.RPT \t संगठन में .apache.commons.io.FileUtils.forceDelete (FileUtils.java:1390) \t org.apache.commons.io.FileDeleteStrategy $ ForceFileDeleteStrategy.doDelete पर (FileDeleteStrategy.java:151) \t org.apache.commons.io पर .FileDeleteStrategy.delete (FileDeleteStrategy.java:94) \t abcbankestatement.ABCBankEStatement.main (ABCBankEStatement।जावा: 502) जावा परिणाम: 1 – ErrorNotFoundException

+0

आप 'deleteQuietly' एक के साथ' delete' विधि की जगह है। इस मामले में ** यदि कोई फ़ाइल हटाई नहीं जा सका, तो कोई अपवाद नहीं डाला जाएगा **। –

+3

यह उन अपवादों से नहीं है जिन्हें मैं छुटकारा पाना चाहता हूं, मुझे हटाई गई फ़ाइलों की आवश्यकता है। – ErrorNotFoundException

3

आप उपयोग कर सकते हैं:

FileUtils.deleteDirectory(File directory) 

से Apache Commons

+3

शायद बेहतर 'cleanDirectory()' के बाद से यह कहते हैं कि यह निर्देशिका को नहीं हटाता है का उपयोग करने के लिए किया था। हालांकि, मुझे 100% यकीन नहीं है कि "साफ" का अर्थ क्या है। मैं * मानता हूं * इसका मतलब है कि यह निर्देशिका सामग्री को हटा देता है, लेकिन दस्तावेज़ीकरण * भयानक * है, इसलिए मैं निश्चित नहीं हो सकता। – Timmmm

1
साथ अपाचे कॉमन्स आईओ

:

File dir = ... 
FileUtils.deleteQuietly(dir); 
dir.mkdirs(); 

इस तरह से अपवादों की जांच करने की आवश्यकता नहीं है।

0

उपयोग:

import org.apache.commons.io.FileUtils; 
    FileUtils.cleanDirectory(fin); 

डॉक्स:

/** 
    * Clean a directory without deleting it. 
    * 
    * @param directory directory to clean 
    * @throws IOException in case cleaning is unsuccessful 
    */ 

आदेश में इसका इस्तेमाल करने की आप किसी निर्भरता की जरूरत है:

Maven:

<dependency> 
    <groupId>commons-io</groupId> 
    <artifactId>commons-io</artifactId> 
    <version>2.6</version> 
</dependency> 

Gradle:

compile 'commons-io:commons-io:2.6' 
0
public void removeDir() 
{ 
try 
{ 
    File dir = new File((System.getProperty("user.dir")+"/ReportFolderToMail"+timeStamp)); 
    if (dir.isDirectory()) 
    { 
     File[] files = dir.listFiles(); 
     if (files != null && files.length > 0) 
     { 
      for (File aFile : files) 
      { 
       System.gc(); 
       Thread.sleep(2000); 
       FileDeleteStrategy.FORCE.delete(aFile); 
       System.out.println("delet file" +aFile); 
      } 
     } 
     dir.delete(); 
     System.out.println("delet" +dir); 
    } 
    else 
    { 
     dir.delete(); 
    } 
} 
catch(Exception e) 
{ 
    e.printStackTrace(); 
} 
+1

कृपया कुछ दस्तावेज/स्पष्टीकरण जोड़ें। –

0
public boolean removeDir() 
{ 
try 
{ 
    //destFile = new File((System.getProperty("user.dir")+"/FileName")) 
    // checks if the directory has any file 
    File dir = destFile; 
    if (dir.isDirectory()) 
    { 
     File[] files = dir.listFiles(); 
     if (files != null && files.length > 0) 
     { 
      for (File aFile : files) 
      { 
       System.gc(); 
       Thread.sleep(2000); 
       FileDeleteStrategy.FORCE.delete(aFile); 
       System.out.println("delet file" +aFile); 
      } 
     } 
     dir.delete(); 
     System.out.println("delet" +dir); 
    } 
    else 
    { 
     dir.delete(); 
    } 
} 
catch(Exception e) 
{ 
    logger.log(LogStatus.FATAL, "Exception Occured While Deleting Folder : " +e); 
} 
return true; 
} 
संबंधित मुद्दे