2016-02-29 98 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