Удаление файла с SD-карты в Android

Я делаю приложение, в котором мне нужно удалить недавно добавленный mp3-файл на SD-карте. Формат, в котором сохраняется песня:

Songhello_17_26.amr

где 17_26 — время добавления песни. Может ли кто-нибудь помочь мне, как удалить недавно добавленный файл в SD-карте. Я имею в виду, что я хочу удалить время, значит, последний добавленный файл должен быть удален. Любая помощь будет оценена.


person Aditya1510    schedule 17.04.2012    source источник


Ответы (4)


Как указано здесь, вы не могу сделать это напрямую, вам сначала нужно получить список файлов File.listFiles(), Comparator, File.lastModified(), Arrays.sort() и удалить.

Отредактировано:

File f = new File(path);

File [] files = f.listFiles();

Arrays.sort( files, new Comparator()
{
    public int compare(Object o1, Object o2) {

        if (((File)o1).lastModified() > ((File)o2).lastModified()) {
            return -1;
        } else if (((File)o1).lastModified() < ((File)o2).lastModified()) {
            return +1;
        } else {
            return 0;
        }
    }

}); 

Чтобы удалить последний:

 files[0].delete();
person Mohammed Azharuddin Shaikh    schedule 17.04.2012
comment
Ваша ссылка была очень хорошей, но не могли бы вы помочь мне с правильным образцом кода. Ваша помощь будет очень признательна. - person Aditya1510; 17.04.2012
comment
С помощью вашего кода я могу получить список всех mp3-файлов, скажите, пожалуйста, как удалить последнюю запись? - person Aditya1510; 17.04.2012
comment
Hotveryspicy, я тоже застрял в той же проблеме, и я также с нетерпением жду вашего ответа. Значит, с помощью вашего кода я получил все файлы с SD-карты, как удалить последнюю запись? - person ; 17.04.2012
comment
Файл файл = новый файл (файлы [o]); файл.удалить(); - person Mohammed Azharuddin Shaikh; 17.04.2012
comment
Не могли бы вы отредактировать свой новый ответ File file = new File(files[o]); файл.удалить(); в ответе выше - person Aditya1510; 17.04.2012
comment
вы можете видеть, что если он не удаляет последний файл, то отсортируйте коллекцию в обратном порядке, а затем удалите. - person Mohammed Azharuddin Shaikh; 17.04.2012
comment
Я сделал имя файла привет, обновленное в вашем ответе, теперь не могли бы вы помочь мне, как получить первый элемент в этом файле? - person ; 17.04.2012
comment
вы можете сделать вот так: files[0].delete(); напрямую. - person Mohammed Azharuddin Shaikh; 17.04.2012
comment
Поскольку этот ответ также упоминается в другом вопросе, который я внес, позвольте мне покритиковать: вы действительно думаете, что необходимо сортировать массив, чтобы найти самый последний файл? stackoverflow.com/q/11482771/1063730 Я считаю, что один раз пройти через массив и просто удерживать самый последний элемент должно быть больше эффективный, докажите, что я не прав? :) - person nuala; 25.07.2012

** попробуйте этот метод:

public static boolean deleteDirectory(File path) {
    // TODO Auto-generated method stub
    if( path.exists() ) {
        File[] files = path.listFiles();
        for(int i=0; i<files.length; i++) {
    enter code here        if(files[i].isDirectory()) {
                deleteDirectory(files[i]);
            }
            else {
                files[i].delete();
            }
        }
    }
    return(path.delete());
}

или вы можете использовать следующий код для удаления файла с SD-карты:

File folder = Environment.getExternalStorageDirectory(); String fileName = folder.getPath() + "/pass/hello.pdf"; с

 String fileName = Environment.getExternalStorageDirectory() + "/pass/hello.pdf";**
person Ganesh    schedule 17.04.2012

Попробуй это

  public String[] getDirectoryList(String path) {
     String[] dirListing = null;
     File dir = new File(path);
     dirListing = dir.list();

     Arrays.sort(dirListing, 0, dirListing.length);
     return dirListing;
  }

  String[]  lstFile = getDirectoryList()
 if(lstFile.length > 0){
    File file = new File(lstFile[0]);
    boolean fStatus = file.delete();

  }
person Piraba    schedule 17.04.2012
comment
Я просто привел это в качестве примера, но у меня есть динамические файлы, и я не знаю имени, я хочу удалить файл по времени, значит, последняя запись должна быть удалена. - person Aditya1510; 17.04.2012
comment
Я принимаю предложение @hotveryspicy. File.listFiles(), Comparator,File.lastModified(), Arrays.sort() это нужно сделать - person Piraba; 17.04.2012

попробуйте это тоже:

  String root_sd = Environment.getExternalStorageDirectory().toString();
 File file = new File(path) ;       
  File list[] = file.listFiles();
    for(File f:list)
      {
     name =  file.getName();
    filestv.setText(f.getName());
    //add new files name in the list
   //  delete.setText(name );

этого кода вы можете увидеть последний файл, сохраненный на SD-карте, я предлагаю вам следовать этому руководство.

person dondondon    schedule 13.06.2015