gpt4 book ai didi

java - Android 删除目录不起作用

转载 作者:行者123 更新时间:2023-11-30 04:26:45 25 4
gpt4 key购买 nike

我正在尝试删除整个目录。我已经搜索并正在使用 this代码,我可以删除目录中的所有内容,但目录仍然存在。这是我所拥有的确切代码,以防我遗漏某些内容。

public boolean DeletePoint(String JobName, String PointName){
//Delete actual contents and file
File folder = new File(rootSaveFolder "/" + PointName+"/");
boolean returnBool = false;
try{
returnBool = deleteDirectory(folder);
folder.delete();
} catch (SecurityException e){
e.printStackTrace();
}
}

static public boolean deleteDirectory(File path) {
if( path.exists() ) {
File[] files = path.listFiles();
if (files == null) {
return true;
}
for(int i=0; i<files.length; i++) {
if(files[i].isDirectory()) {
deleteDirectory(files[i]);
}
else {
files[i].delete();
}
}
}
return(path.delete());
}

我要删除的文件的字符串是:/mnt/sdcard/test/gg/

我试过不带最后的 '/' 也没有用。

最佳答案

这是你的问题;

你的递归几乎是正确的......这就是问题所在。

如果 files[i] 是一个目录,(你理所当然地去清除里面的所有东西)但是,一旦删除了 files[i] 中的“所有内容”,实际上并没有删除 files[i] 本身。

所以递归是不完整的;你需要做的是删除“别的”在 forloop 中。

这样当 files[i] 是一个目录时,将在删除其中的所有内容后进行清理。你只是离开它。

更具体地说:

public void deleteFile(String uri)
{
File currentFile = new File(uri);
File files[] = currentFile.listFiles();
for (int i = 0; i < files.length; i++)
{
if (files[i].isDirectorty())
{
deleteFiles(files[i].toString());
}
//no else, or you'll never get rid of this folder!
files[i].delete();
}
}

关于java - Android 删除目录不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8362850/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com