2014-10-13 6 views
0

У меня есть несколько фотографий в папке на SDCard с этими именами:не может переименовать все файлы в папке

000.jpg 
001.jpg 
002.jpg 
003.jpg 
004.jpg 
... 

сортировка имен так важно и всегда должно быть. Теперь я хочу сохранить этот вид даже после удаления фотографии. Я имею в виду, если бы я удалил, например, третью фотографию, то моя четвертая фотография должна быть переименована в 002, с пятого на 003 и так далее.

Я writed этого кода для моей цели:

// "myfiles" is a File array of directory listfiles. 
// "str1" is my folder name and I checked it for existences before 
// "numb" is the pic number that should delete. 
File pic = new File(Environment.getExternalStorageDirectory() + "/Albummaker/" + str1 + "/" + String.format("%03d", numb) + ".jpg"); 
pic.delete(); 
// now I get the myfiles (I mean after deleting). 
for (int i = numb; i < myfiles.length; i++) { 
     File f = new File(Environment.getExternalStorageDirectory() + "/Albummaker/" + str1 + "/"+myfiles[i].getName()); 
     f.renameTo(new File(Environment.getExternalStorageDirectory() + "/Albummaker/" + str1 + "/"+String.format("%03d", i)+".jpg")); 
    } 

, но когда я запускаю это удаляет фотографии до удаленных один (в данном случае 001 и 002), а затем переименуйте остальные из них (и я После этого у вас будет 3 фотографии (002, 003, 004)).

любая идея?

ответ

0

Просто удалите файл и восстановите заказ позже. Переименуйте их число от 1 вверх.

Это псевдо-код:

// first get rid of the file 
albumFile.delete(); 

// then restore the ordering in the album 
organizeALbum(albumDir); 

void organizeAlbum(albumDir) { 
    var files = albumDir.getFiles("*.jpg"); 
    var sortedFiles = files.sort(); // sort ascending from 000.jpg to 999.jpg 
    int index = 1; 
    foreach (file in files) { 
     file.rename(index.toString("###") + ".jpg"); 
     index += 1; 
    } 
} 

Это псевдо-код, но вы можете понять это в Android Java.

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