我在SD卡上的文件夹中有一些照片,上面有这些名字:
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))
任何想法?
答案 0 :(得分: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中找到它。