2012-06-26 4 views
0

Почему этот код работать: Sудаление файлов из SDCard

public void delete(String name) { 
    File file = new File(
      activity.getExternalFilesDir(Environment.DIRECTORY_PICTURES), 
      name); 

    if (file.exists()) { 
     String[] files = file.list(); 
     for (int i = 0; i < files.length; i++) { 
      boolean deleted; 
      if (new File(files[i]).isDirectory()) 
       delete(new File(files[i]).getName()); 
      else { 
       deleted = new File(files[i]).delete(); 
       Log.d(new File(files[i]).getName(), 
         Boolean.toString(deleted)); 
      } 
     } 
    } 
} 

И я использую разрешение

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 

И когда я проверил значение удален я нашел, что это неверно: S

+0

Попробуйте закрыть файл ручками сразу после удаления. Также я думаю, что вам нужно реорганизовать свой код, чтобы четко показать каталоги и файлы, что сбивает с толку меня по крайней мере – Slartibartfast

+0

. Что вы имеете в виду с вашим кодом, чтобы четко показать каталоги и файлы? –

+0

Является ли это 'File file = new File (activity.getExternalFilesDir (Environment.DIRECTORY_PICTURES), имя);' каталог? Кажется, что это каталог, из которого вы используете .list, чтобы перечислять все файлы, а затем удалять их один за другим. В основном рефакторинг, чтобы продемонстрировать этот факт, очевидно, что все просто говорит файл или файлы. – Slartibartfast

ответ

0

Попробуйте

public static boolean deleteDirectory(String name) { 
      // TODO Auto-generated method stub 
File path= new File(
      activity.getExternalFilesDir(Environment.DIRECTORY_PICTURES), 
      name); 

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

нет метода, называемого close in File class –

+1

Вы правы - извините, длинный день - просто попробуйте приведенный выше код - он работает для меня – Slartibartfast

+0

Yup, это работает .. –

Смежные вопросы