2011-05-07 5 views
2

내 응용 프로그램을 시작할 때 하위 폴더가있는 sdcard에서 폴더를 삭제하려고하는데 삭제할 경로를 설정하는 방법을 모르겠다. 비어 있지 않은 폴더를 sdcard에서 삭제하기

는이 같은이 폴더 삭제하는 간단한 작업을 생성 :

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

을 내 매니페스트에 추가 :

uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" 
uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" 

하지만 여전히 이동합니다. 아직 sdcard에 내 TEST 폴더가 있습니다. 에뮬레이터와 장치 2.2에서이 활동을 테스트했습니다. 나는 "DIR"다른 뭔가 "무효 DeleteRecursive (파일 DIR)"로 변경하는 경우

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

불평하지 않기 때문에 : 나는 내 경로를 설정하는 방법을 얻을 그나마

함께 삭제 될 dir "이 설정되지 않았습니다! 그래서 이것은 전혀 작동하지 않습니다. 어떤 췌장?

+0

'새로운 파일 (. android.os.Environment.getExternalStorageDirectory() getPath(), "테스트");'나를 위해 작동합니다. 'DeleteRecursive'를 호출하고 있습니까? 코드에서 찾을 수 없습니다 ... – FrVaBe

+0

[SD 카드의 폴더 삭제] 가능한 복제본 (http://stackoverflow.com/questions/5701586/delete-a-folder-on-sd-card) –

답변

0

이 밖으로 시도 :

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

일, 그들 중 누구도. : – bernabap

+0

처음에 이것은 SD 카드의 경로가 아니며 두 번째'file.delete();는'file' 객체가 비어 있지 않은 디렉토리를 삭제하지 않습니다. –

2
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()); 
    } 
} 
관련 문제