无法重命名文件夹中的所有文件

时间:2014-10-13 13:17:26

标签: java android

我在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))

任何想法?

1 个答案:

答案 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中找到它。