Java 在Android中删除文件
我有一个包含很多文件的目录。我想删除整个目录以及其中的所有文件 我希望我的代码等到该目录中的每个文件(包括目录本身)被删除后,才能执行下一个命令 我怎么等? 我的代码是Java 在Android中删除文件,java,android,java-io,android-file,Java,Android,Java Io,Android File,我有一个包含很多文件的目录。我想删除整个目录以及其中的所有文件 我希望我的代码等到该目录中的每个文件(包括目录本身)被删除后,才能执行下一个命令 我怎么等? 我的代码是 public void wipeMemoryCard() { File deleteMatchingFile = new File(Environment .getExternalStorageDirectory().toString()); try
public void wipeMemoryCard()
{
File deleteMatchingFile = new File(Environment
.getExternalStorageDirectory().toString());
try {
filenames = deleteMatchingFile.listFiles();
if (filenames != null && filenames.length > 0)
{
content = true;
for (File tempFile : filenames)
{
if (tempFile.isDirectory())
{
wipeDirectory(tempFile.toString());
tempFile.delete();
}
else
{
File file = new File(tempFile.getAbsolutePath());
file.delete();
}
}
}
else
{
deleteMatchingFile.delete();
Toast("No files to Delete");
}
}
catch (Exception e)
{
e.printStackTrace();
}
if(content == true)
{
if (filenames == null && filenames.length == 0)
{
Toast("Files Deleted");
}
}
}
private static void wipeDirectory(String name) {
File directoryFile = new File(name);
File[] filenames = directoryFile.listFiles();
if (filenames != null && filenames.length > 0)
{
for (File tempFile : filenames)
{
if (tempFile.isDirectory())
{
wipeDirectory(tempFile.toString());
tempFile.delete();
}
else
{
File file = new File(tempFile.getAbsolutePath());
file.delete();
}
}
} else
{
directoryFile.delete();
}
}
为此,您应该使用用户处理程序,这样当删除所有文件时,它将向处理程序发送消息,以执行您要执行的下一个任务 有关处理程序,请参阅此链接
希望您正在询问此问题。…您不应该在UI线程上运行此操作。如果文件删除时间过长,系统将弹出“应用程序未响应”错误。你可以用一只手来做这件事。文档展示了一种简单的方法,可以使用它弹出一个“请稍候”对话框,在后台执行耗时的工作,然后关闭该对话框 另外,你的方法名称有点吓人!:)
公共静态void DeleteRecursive(字符串文件名){
文件=新文件(文件名);
如果(!file.exists())
返回;
如果(!file.isDirectory()){
delete();
返回;
}
String[]files=file.list();
对于(int i=0;i
感谢您的评论。这是一个测试应用程序。无意冒犯,讽刺不会在文本中出现:P.S:-D的DPLU 1
public static void DeleteRecursive(String filename) {
File file = new File(filename);
if (!file.exists())
return;
if (!file.isDirectory()) {
file.delete();
return;
}
String[] files = file.list();
for (int i = 0; i < files.length; i++) {
DeleteRecursive(filename + "/" + files[i]);
}
file.delete();
}