26

内部ストレージからフォルダ (フォルダとファイルを含む) を削除する方法は? フォルダにはツリーの下にいくつかあります。

folder
|_________  C2 (folder)
             |________1 (folder)
                      |________1.gif
                      |________2.gif
                      |________3.gif
                      |________4.gif
             |________2 (folder)
                      |________1.gif
                      |________2.gif
                      |________3.gif
                      |________4.gif
             |________3 (folder)
                      |________1.gif
                      |________2.gif
                      |________3.gif
                      |________4.gif
             |________4 (folder)
                      |________1.gif
                      |________2.gif
                      |________3.gif
                      |________4.gif
             |________5 (folder)
                      |________1.gif
                      |________2.gif
                      |________3.gif
                      |________4.gif

|_________  C2.xml (file)

すべてのファイルを含むフォルダを削除したい

fil.delete();

System.out.println("boolean =>" + fil.delete());

しかし、上記のコードはfalseを示しています。助けてください。

4

4 に答える 4

86

これをチェックしてください。

public void deleteRecursive(File fileOrDirectory) {

   if (fileOrDirectory.isDirectory()) {
       for (File child : fileOrDirectory.listFiles()) {
          deleteRecursive(child);
       }
   }

   fileOrDirectory.delete();
 }

説明のためにフォルダとコンテンツ全体を削除する方法は?

于 2012-11-16T05:49:39.623 に答える
8

サブフォルダーにファイルが含まれている場合、ルートフォルダーを削除できません。そのためには、最初に各サブファイルを削除する必要があります。その後、フォルダーを削除できます。

あなたのコードは有効です。次のように更新します。

 boolean deleted = mypath.delete();

すなわち。mypathあなたのファイルディレクトリです。

于 2012-11-16T05:28:48.613 に答える
2

Rootfolder はシステム フォルダーであるため削除できません。電話で手動で削除すると、そのフォルダの内容は削除されますが、ルート フォルダは削除されません。以下の方法で内容を削除できます。

private void DeleteRecursive(File fileOrDirectory) {
    if (fileOrDirectory.isDirectory())
        for (File child : fileOrDirectory.listFiles())
        {
            child.delete();
            DeleteRecursive(child);
        }

    fileOrDirectory.delete();
}
于 2012-11-16T05:29:45.643 に答える