2012-01-04 9 views
0

ディレクトリ内のすべてのファイルを削除することはできません。これはNetBeansのサーブレットアプリケーションです。NetBeansのサーブレット内のディレクトリ内のすべてのファイルを削除できません

public void updateRootFile(String directorypath, String appID, String[] appName) throws IOException { 
    FileInputStream finStream =null; 
    BufferedReader br = null; 
    OutputStreamWriter outStream = null; 
    FileInputStream fins = null; 

    String strLine="";  

    try {  
     File[] listOfFiles = fileLists("D:\\root\\"); 
     for (int i = 0; i < listOfFiles.length; i++) { 
      String rootFiles = listOfFiles[i].getName(); 

      File rootFile = new File("D:/root/"+rootFiles);   
      File copyFile = new File("D:/root1/"+rootFiles); 

      finStream = new FileInputStream(rootFile); 

      //String propertyStr = "root.label." + appID; 
      //properties.load(new InputStreamReader(finStream, Charset.forName("UTF-8"))); 
      //String getAppName = properties.getProperty("root.label." + appID); 
      //String toUtf =new String(appName[i].getBytes("iso-8859-1"), "UTF-8") ; 
      //String oldChar = propertyStr + "=" + getAppName; 
      //String newChar = propertyStr + "=" + toUtf; 

      fins = new FileInputStream(rootFile); 

      br = new BufferedReader(new InputStreamReader(fins, "UTF-8")); 
      outStream = new OutputStreamWriter(new FileOutputStream(copyFile), "UTF-8"); 
      while ((strLine = br.readLine()) != null) {    
       strLine = strLine.replace("hai", "haai"); 
       outStream.write(strLine); 
       outStream.write("\r\n"); 
      } 
      outStream.flush(); 
      outStream.close(); 
      br.close(); 
      fins.close(); 
      finStream.close();     
     }     
    } catch (Exception e) { 
     System.out.println("Excpetion : " + e); 
    } 

    File rootFileone = new File("D:/root");  
    boolean check= deleteDir(rootFileone);  
} 


public static boolean deleteDir(File dir) { 
    if (dir.isDirectory()) { 
     String[] children = dir.list(); 
     for (int i=1; i<children.length; i++) { 
      boolean success = deleteDir(new File(dir, children[i])); 
      //if (!success) { 
      // return false; 
      // } 
     } 
    } 
    // The directory is now empty so delete it 
    return dir.delete(); 
} 


private File[] fileLists(String directorypath) { 
    folder = new File(directorypath); 
    listOfFiles = folder.listFiles(); 
    return listOfFiles; 
} 

私は29 .propertiesのファイルをフォルダに持っています。しかし、このループでは、少なくとも1つのファイルは削除されないままです。したがって、私はフォルダを削除することはできません。

+2

問題点を教えてください。 –

+2

@Michael Petrotta:今私の質問の問題は何ですか?返信してください – 1355

+3

あなたは実際にあなたのファイルをどこで削除しますか? –

答えて

2

ファイルは別のファイルによって開かれていると削除できません。

これには、独自のコードの内部と外部の両方で、多くの原因が考えられます。あなた自身のコード内でこれらのファイルを排他的に管理していると仮定します。ファイルを読み書きしているtryブロックのfinallyブロック内の/OutputStreamまたはReader/Writerブロックのclose()メソッドを呼び出していることを確認する必要があります。

だから、あなたはInputStream/OutputStreamReader/Writerリソースを作成、使用およびクローズの次のJava IOのイディオムを接着していることを確認してください。

Writer writer = null; 

try { 
    writer = new FileWriter(file); // Just an example. Can be any Writer. 
    writer.write(something); 
    // ... 
} finally { 
    if (writer != null) try { writer.close(); } catch (IOException ignore) {} 
} 

それともJava 7にすでにしているとき:

try (Writer writer = new FileWriter(file)) { 
    writer.write(something); 
    // ... 
} 

tryブロックが残っているとき、それはAutoCloseableリソースを自動的に閉じます。

+0

私は試しました。しかし、何も変わっていない。私は私の質問に完全なコードを追加します。 – 1355

2

org.apache.commons.io.FileUtils.deleteDirectory()を使用してディレクトリを再帰的に削除することはどうですか?

関連する問題