2016-02-29 140 views
-2

我可以将文件扩展名从“.mp4”更改为“.xmp4”,但不是改变扩展名,我只是想添加一个“。”。例如“mikey.jpg”到“.mikey.jpg”之前的文件名称。我怎么做?在android中重命名文件扩展名

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)); 
      } 
     } 
    } 
} 

这里是完整的代码

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    view = (LinearLayout) findViewById(R.id.view); 

    // getting SDcard root path 
    File dir = new File(Environment.getExternalStorageDirectory() 
      .getAbsolutePath()); 
    walkdir(dir); 
} 

public static final String[] TARGET_EXTENSIONS = { "mp4", "mp3", "avi", "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)); 
      } 
     } 
    } 
} 

}

回答

2

首先你做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, ".")上的插入方法,现在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; 
} 

编辑

这是你如何使用上面的方法在你的代码

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) { 
        if(fPath.endsWith(ext)) { 
         putDotBeforeFileName(listFile[i]); 
        } 
       } 
      } 
     } 
    } 
} 
+0

@Felicia与完整的代码,只复制该函数并在您要重命名的代码中调用它,此方法还将重命名您传递给它的File实例,并返回该实例的fullPath新创建的文件 – Bhargav

+0

是使用我在这里发布的方法 – Bhargav

+0

@Felicia检查编辑的答案,看看如何在代码中使用该方法 – Bhargav