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