重命名具有特定扩展名的文件

时间:2016-02-29 05:30:31

标签: android

我正在尝试重命名存储中两种类型文件的扩展名。第一种类型是" .mp3",我想将其重命名为" .xmp3" ,第二种类型是" .mp4"到" .xmp4" 。我可以使用此方法删除文件,但如何修改它以重命名文件?感谢

public void walkdir(File dir) {
    String Patternjpg = ".mp4";
    File listFile[] = dir.listFiles();
    if (listFile != null) {
        for (int i = 0; i < listFile.length; i++) {
            if (listFile[i].isDirectory()) {
                walkdir(listFile[i]);
            } else {
                if (listFile[i].getName().endsWith(Patternjpg)) {
                    // Do what ever u want
                    listFile[i].delete();
                }
            }
        }
    }

2 个答案:

答案 0 :(得分:2)

public void walkdir(File dir) {
    String Patternjpg = ".mp4";
    File listFile[] = dir.listFiles();
    if (listFile != null) {
        for (int i = 0; i < listFile.length; i++) {
            if (listFile[i].isDirectory()) {
                walkdir(listFile[i]);
            } else {
                String name = listFile[i].getName();
                if (name.endsWith("mp4") || name.endsWith("mp3")) {
                    // Do what ever u want
                    String fileName = listFile[i].getAbsolutePath();
                    int indexOfDot = fileName.indexOf(".");
                    StringBuilder newFileName = new StringBuilder(fileName);
                    newFileName.insert(indexOfDot + 1, "x");
                    listFile[i].renameTo(new File(newFileName.toString()));
                }
            }
        }
    }
}

这可能工作我还没有测试过,renameTo方法肯定有效,但是生成新文件名并不需要测试,只需测试新文件字符串是否是你想要的字符串

修改

第二次查询

  

但你可以告诉我而不是重命名扩展,我怎么简单地添加   a&#34;。&#34;例如,在文件名之前,miller.jpg - &gt; .miller.jpg我   如果你帮忙,我会投票

首先执行String fileName = listFile[i].getName();,它应该为您提供名称,然后执行String fullPath = listFile[i].getAbsolutePath();以获取完整路径,然后执行int indexOfFileNameStart = fullPath.lastIndexOf(fileName),然后从中获取字符串生成器实例fullPath就像这样StringBuilder sb = new StringBuilder(fullPath);,现在你在sb sb.insert(indexOfFileNameStart, ".")上调用insert方法,现在sb应该有你想要的字符串,只需将它构造成字符串sb.toString()

我在代码

中添加此内容
private String putDotBeforeFileName(File file) {
    String fileName = file.getName();
    String fullPath = file.getAbsolutePath();
    int indexOfFileNameStart = fullPath.lastIndexOf(fileName);
    StringBuilder sb = new StringBuilder(fullPath);
    sb.insert(indexOfFileNameStart, ".");
    String myRequiredFileName = sb.toString();
    file.renameTo(new File(myRequiredFileName));
    return myRequiredFileName;
}

如果您为此发布了一个单独的问题,我更愿意,因为这个问题与此答案无关

答案 1 :(得分:1)

只需使用文件的renameTo方法重命名以目标扩展名结尾的文件。

您可以通过定义方法需要在'x'之前添加的一组扩展来一般地考虑任何扩展类型。

例如,下面的方法对已定义的扩展进行了一系列替换,然后重命名该文件:

public static final String[] TARGET_EXTENSIONS = { "mp4", "mp3", "mp55", "other" };

public void walkdir(File dir) {
    File listFile[] = dir.listFiles();
    if (listFile != null) {
        for (int i = 0; i < listFile.length; i++) {
            if (listFile[i].isDirectory()) {
                walkdir(listFile[i]);
            } else {
                String fPath = listFile[i].getPath();

                for (String ext : TARGET_EXTENSIONS) {
                    fPath = fPath.replace("." + ext, ".x" + ext)
                }

                listFile[i].renameTo(new File(fPath));
            }
        }
    }
}