2011-12-02 14 views
1

ディレクトリ全体を削除しようとしています。私は検索して、thisコードを使用しています。ディレクトリ内のすべてを削除できますが、ディレクトリはまだ残っています。ここに私が何かを欠けている場合のために持っている正確なコードがあります。Android Delete Directoryが機能しない

public boolean DeletePoint(String JobName, String PointName){ 
    //Delete actual contents and file 
    File folder = new File(rootSaveFolder "/" + PointName+"/"); 
    boolean returnBool = false; 
    try{ 
     returnBool = deleteDirectory(folder); 
     folder.delete(); 
    } catch (SecurityException e){ 
     e.printStackTrace(); 
    } 
} 

static public boolean deleteDirectory(File path) { 
    if(path.exists()) { 
     File[] files = path.listFiles(); 
     if (files == null) { 
      return true; 
     } 
     for(int i=0; i<files.length; i++) { 
     if(files[i].isDirectory()) { 
      deleteDirectory(files[i]); 
     } 
     else { 
      files[i].delete(); 
     } 
     } 
    } 
    return(path.delete()); 
    } 

私は削除していたファイルの文字列がある:を/ mnt/SDカード/テスト/ GG/

は私が最終的に「/」アウトでそれを試してみましたが、それはどちらか動作しませんでした。

答えて

1

ディレクトリが空ですか?空でないディレクトリは削除できません。

+0

はい、私はそれが空である正午前:より具体的には

。 – CornCat

+0

@PatrickコードでFile.length()メソッドを使用することはありません。 – user802421

0

マニフェストに適切な権限WRITE_EXTERNAL_STORAGEを設定しましたか。時々見落とすこと容易:ソーストピックで/

ルックを、私はその男が、それが動作するようになったと思います...

出典:Delete a folder on SD card

+0

はい、私はこれを私のマニフェストに定義しました。まだ他のものはすべて削除されますが、フォルダだけが残っています。 – CornCat

0

どのようにフォルダが残されていることを確認していますか?場合によっては、DDMSファイルエクスプローラが同期していないため、ディレクトリが消えるのを確認する前にリフレッシュする必要があります。

+0

私はAtroを使用してSDカードを表示していますが、SDを自分のコンピュータにマウントしました。どちらもまだディレクトリを表示しています – CornCat

1

ここに問題があります。

あなたの再帰はほぼ正しいです... ここに問題があります。

ただし、files [i]の「すべて」が削除されると、実際にファイル[i]自体は削除されません。

したがって、再帰は不完全です。 forloop内の 「else」 を削除する必要があります。

このように、ディレクトリであるファイル[i]は、その中のすべてのものが削除された後にクリーンアップされます。あなたはちょうどそれを残していた。

public void deleteFile(String uri) 
{ 
    File currentFile = new File(uri); 
    File files[] = currentFile.listFiles(); 
    for (int i = 0; i < files.length; i++) 
    { 
      if (files[i].isDirectorty()) 
      { 
       deleteFiles(files[i].toString()); 
      } 
      //no else, or you'll never get rid of this folder! 
      files[i].delete(); 
    } 
} 
0
try { 
    File tempFolder = new File(path); 

    for (File f : tempFolder.listFiles()){ 
     if (!f.isDirectory()) { 
      f.delete(); 
     } 
     tempFolder.delete(); 
    } 

} catch (Exception e) { 
    e.printStackTrace(); 
} 
関連する問題