递归删除包含文件和文件夹的整个目录

时间:2018-06-28 07:10:22

标签: java android

在我的android代码中,deleteRecursive方法似乎可以正常工作,但是当我将代码保留在 onPostExecute 方法中时,它显示错误,提示

  

无法解析方法isDirectory(),   在deleteRecursive(child)中预期的方法调用   无法解析方法delete()

这是我的代码,

@Override
protected void onPostExecute(JSONObject json) {
    super.onPostExecute(json);

    int success = 0;

    if (pDialog != null && pDialog.isShowing()) {
        pDialog.dismiss();
    }

    if (json != null) {
        try {
            success = json.getInt(TAG_SUCCESS);
        } catch (JSONException e) {
            e.printStackTrace();
        }
    }

    if (success == 1) {
        String fileOrDirectory = finalSavePath + "/";
        public void deleteRecursive(File fileOrDirectory) {
            if (fileOrDirectory.isDirectory()) {
                for (File child : fileOrDirectory.listFiles()) {
                    deleteRecursive(child);
                }
                fileOrDirectory.delete();
            }
        } else {
            Toast.makeText(context, "Sorry, cannot Delete", Toast.LENGTH_LONG).show();
        }
    }
}

我了解我很想念一些愚蠢的东西,对您的任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:0)

您无法在if else语句中创建方法

尝试一下

 public static void deleteFilesAndFolders(File fileOrDirectory) {

    if (fileOrDirectory.isDirectory())
        for (File child : fileOrDirectory.listFiles())
            deleteFilesAndFolders(child);

    fileOrDirectory.delete();

}

直接在您的语句中调用deleteFilesAndFolders(fileOrDirectory)。

答案 1 :(得分:0)

您已经在函数内部创建了函数,就是问题所在。

尝试如下更改代码...

@Override
protected void onPostExecute(JSONObject json) {
    super.onPostExecute(json);


    int success = 0;

    if (pDialog != null && pDialog.isShowing()) {
        pDialog.dismiss();
    }

    if (json != null) {
        try {
            success = json.getInt(TAG_SUCCESS);
        } catch (JSONException e) {
            e.printStackTrace();
        }
    }

    if (success == 1) {
        String fileOrDirectory = finalSavePath + "/";
        deleteRecursive(new File(fileOrDirectory));

    }else{
        Toast.makeText(context, "Sorry, cannot Delete", Toast.LENGTH_LONG).show();
    }

}



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

    fileOrDirectory.delete();
}