Android 从SD卡中删除非空文件夹

Android 从SD卡中删除非空文件夹,android,Android,我试图让我的应用程序在启动时删除SD卡上的文件夹(包含子文件夹),但我不知道如何将路径设置为删除 我创建了一个简单的活动来删除此文件夹,如下所示: package org.android.test; import java.io.File; import android.app.Activity; import android.os.Bundle; import android.util.Log; public class DelSD extends Activity { F

我试图让我的应用程序在启动时删除SD卡上的文件夹(包含子文件夹),但我不知道如何将路径设置为删除

我创建了一个简单的活动来删除此文件夹,如下所示:

package org.android.test;    
import java.io.File;    
import android.app.Activity;
import android.os.Bundle;
import android.util.Log;

public class DelSD extends Activity {

File dir = new File(android.os.Environment
        .getExternalStorageDirectory().getPath(),
        "/TEST");

    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);        
    }

    void DeleteRecursive(File dir)
    {
        Log.d("DeleteRecursive", "DELETEPREVIOUS TOP" + dir.getPath());
        if (dir.isDirectory())
        {
            String[] children = dir.list();
            for (int i = 0; i < children.length; i++) 
            {
               File temp =  new File(dir, children[i]);
               if(temp.isDirectory())
               {
                   Log.d("DeleteRecursive", "Recursive Call" + temp.getPath());
                   DeleteRecursive(temp);
               }
               else
               {
                   Log.d("DeleteRecursive", "Delete File" + temp.getPath());
                   boolean b = temp.delete();
                   if(b == false)
                   {
                       Log.d("DeleteRecursive", "DELETE FAIL");
                   }
               }
            }    
            dir.delete();
        }
    }     
}
但还是不行。SD卡上的测试文件夹仍然存在。我在emulator和我的设备2.2上测试了这个活动

我不知道如何设置要删除的路径:

File dir = new File(android.os.Environment
            .getExternalStorageDirectory().getPath(),
            "/TEST");
因为如果我将“dir”更改为其他内容,“void DeleteRecursive(File dir)”不会抱怨“dir”未设置!所以这根本不起作用。有什么建议吗

试试这个:

public void DeleteFromSdCard()                          //Testing purpose only
{
    File checkFile = new File("/sdcard/TEST/");
    File[] lstFile;

    if(checkFile.exists())
    {
        lstFile = checkFile.listFiles();

        for(int i =0; i<lstFile.length;i++)
        {
            File file = lstFile[i];
            file.delete();
        }
    }
}
public void DeleteFromSdCard()//仅用于测试目的
{
文件checkFile=新文件(“/sdcard/TEST/”);
文件[]lstFile;
if(checkFile.exists())
{
lstFile=checkFile.listFiles();
对于(inti=0;i
import java.io.File;
类DeleteDir{
公共静态void main(字符串参数[]){
deleteDirectory(新文件(args[0]);
}
静态公共布尔删除目录(文件路径){
if(path.exists()){
File[]files=path.listFiles();

对于(int i=0;i
新文件(android.os.Environment.getExternalStorageDirectory().getPath(),“TEST”);
对我有效。是否确实调用了
DeleteRecursive
?在代码中找不到它…第一个文件可能重复这可能不是SD卡的路径,第二个文件可能重复。delete()当
文件
对象是非空目录时,
不会删除任何内容。
public void DeleteFromSdCard()                          //Testing purpose only
{
    File checkFile = new File("/sdcard/TEST/");
    File[] lstFile;

    if(checkFile.exists())
    {
        lstFile = checkFile.listFiles();

        for(int i =0; i<lstFile.length;i++)
        {
            File file = lstFile[i];
            file.delete();
        }
    }
}
import java.io.File;

class DeleteDir {
  public static void main(String args[]) {
    deleteDirectory(new File(args[0]));
  }

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