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

Java 递归删除包含文件和文件夹的整个目录,java,android,Java,Android,在我的android代码中,deleteRecursive方法似乎工作得很好,但是当我将代码保存在onPostExecute方法中时,它会显示错误,如 无法解析方法isDirectory(), deleteRecursive(子级)中需要方法调用 无法解析方法delete() 这是我的一段代码 @Override protected void onPostExecute(JSONObject json) { super.onPostExecute(json); int succ

在我的android代码中,deleteRecursive方法似乎工作得很好,但是当我将代码保存在onPostExecute方法中时,它会显示错误,如

无法解析方法isDirectory(), deleteRecursive(子级)中需要方法调用 无法解析方法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();
        }
    }
}

我知道我遗漏了一些非常愚蠢的东西,如果您能提供任何帮助,我将不胜感激。

您不能在if-else语句中创建方法

试试这个

 public static void deleteFilesAndFolders(File fileOrDirectory) {

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

    fileOrDirectory.delete();

}

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

您已经在函数中创建了函数,这就是问题所在

尝试更改您的代码,如下所示

@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();
}

它应该是deleteRecursive(新文件(fileOrDirectory),而不是deleteRecursive(fileOrDirectory)。@priyank patel,你不是一个伟大的程序员,但你是一个有着良好习惯的优秀程序员。谢谢一群人。你消除了很多头痛。@priya谢谢,很高兴帮助你。