我在sdcard上的一个文件夹里有一些照片,名字是:
000.jpg
001.jpg
002.jpg
003.jpg
004.jpg
...
名字的种类是如此重要,应该总是这样。现在,我希望即使在删除照片后仍保持这种排序。我的意思是,如果我删除了第三张照片,那么我的第四张照片应该重命名为002,第五张重命名为003,依此类推。
出于我的目的,我编写了以下代码:
// "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))。
有什么想法吗?
发布于 2014-10-13 21:35:13
只需删除该文件,然后恢复排序即可。将它们重命名,从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中找到它。
https://stackoverflow.com/questions/26340920
复制相似问题