如何使用listIndexOf()删除部分文件名?

时间:2012-08-03 03:56:08

标签: java

我有这些文件:

 Hingga Akhir Nanti - Allycats_part001
, Hingga Akhir Nanti - Allycats_part002
, Hingga Akhir Nanti - Allycats_part003

我想从"_part001"开始删除,并将其替换为文件夹中所有文件的扩展名.mp3

关于如何在Java中做到这一点的任何想法?

2 个答案:

答案 0 :(得分:3)

我希望这段代码能为您提供帮助。

/**
 * Pass your file names here as a comma separated values
 * @param strs
 * @return nothing
 */
 public static void convertToMp3Extenesion(String... strs) {
  for (String string : strs) {
    File file  = new File(string);
    if (!file.exists()){
    continue;
    }
    String replacedFileName = string.replaceAll("_part\\d+", ".mp3");

    file.renameTo(new File(replacedFileName));
  }

为了从一个目录中获取所有文件,您可以将上述代码段增强为

/**
 * pass your directory containg your files
 * @param directory name
 * @return nothing
 */
 public static void convertToMp3Extenesion(String dir) {

 File fileDir = new File(dir);
 if (!fileDir.isDirectory()) {
 System.err.println(dir +" is not a valid directory ");
 return;
 }

 String[] strs = fileDir.list();
  //use if for debug. not so good, if files are too many
 //System.out.println("All Files "+Arrays.toString(strs));
 for (String string : strs) {

   File file  = new File(dir+ File.separator+ string);
   if (!file.exists()) {
      continue;
   }
   String replacedFileName = string.replaceAll("_part\\d+", ".mp3");

   file.renameTo(new File(dir+ File.separator+ replacedFileName));
 }

答案 1 :(得分:2)

您可以使用正则表达式myFileName.replaceAll("_part\\d+", ".mp3"),然后使用文件的renameTo()方法应用新名称。

我认为它所采用的字符串是文件的完整路径,所以要小心包含它(如果我在前面正确的话)。