2

重複の可能性:
SDカード上のフォルダを削除する

私のアプリでは、内部ストレージ、つまりファイルを使用してすべてのデータを保存しました。したがって、最初にContextWrapper cw = new ContextWrapper(getApplicationContext());クラスを使用して、ディレクトリパスを次のように取得しますm_AllPageDirectoryPath = cw.getDir("AllPageFolder", Context.MODE_PRIVATE);。このディレクトリパス内に、ファイルFileをPage01、page02、Page03などとして保存しました。

再びPage01内に、image01、image02などのファイルを保存しました...同じ概念を使用してm_PageDirectoryPath = cw.getDir("Page01", Context.MODE_PRIVATE);m_AllPageDirectoryPathを削除すると、それに関連するすべてのファイルを削除したいと思います。このコードを使用してみましたが、機能しません。

File file = new File(m_AllPageDirectoryPath.getPath()); 
file.delete();
4

1 に答える 1

3

コードは、ディレクトリが空の場合にのみ機能します。

ディレクトリにファイルとサブディレクトリが含まれている場合は、すべてのファイルを再帰的に削除する必要があります。

このコードを試してください、

// Deletes all files and subdirectories under dir.
// Returns true if all deletions were successful.
// If a deletion fails, the method stops attempting to delete and returns false.
public static boolean deleteDir(File dir) {
    if (dir.isDirectory()) {
        String[] children = dir.list();
        for (int i=0; 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();
}

(実際には、この質問をする前にインターネットで検索する必要があります)

于 2012-06-26T07:36:34.757 に答える