【问题标题】:Deleting files in Android在 Android 中删除文件
【发布时间】:2012-02-06 14:51:24
【问题描述】:

我有一个包含很多文件的目录。我想删除整个目录以及其中的所有文件。

我希望我的代码等到该目录中的每个文件(包括目录本身)都被删除后,再执行下一个命令。

我该如何等待? 我的代码是

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

【问题讨论】:

  • 感谢您的 cmets。这是一个测试应用程序。
  • 无意冒犯,文字中不会出现讽刺。 :D

标签: java android java-io android-file


【解决方案1】:

您不应该在 UI 线程上运行它。如果文件删除时间过长,系统会弹出“Application Not Responding”错误。您可以使用AsyncTask 来执行此操作。文档显示了一种使用它来弹出“请稍候”对话框的简单方法,在后台执行耗时的工作,然后关闭对话框。

附:你的方法名有点吓人! :)

【讨论】:

  • P.S 加 1 :-D
【解决方案2】:

您应该为此使用 Handler ,因此当所有文件被删除时,它将向处理程序发送消息以执行您要执行的下一个任务。

查看此链接以获取处理程序..

http://www.tutorialforandroid.com/2009/01/using-handler-in-android.html

希望你问这个......

【讨论】:

    【解决方案3】:
    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();
    }
    

    【讨论】:

      猜你喜欢
      • 2014-12-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多