2016-03-01 60 views
2

我可以將前綴點(「。」)應用於所有成功擴展了.gif的文件。例如,將「my_file.gif」重命名爲「.my_file.gif」)。但是,我想再次使用代碼(AKA反轉它)來刪除此前綴點。我已經嘗試過,但它不會起作用。 (根本不刪除點)下面是我的代碼和我的方法 -如何在android中重命名文件?

這是添加一個點前綴(其中正常工作)的代碼 -

// getting SDcard root path 
    File dir = new File(Environment.getExternalStorageDirectory() 
      .getAbsolutePath()); 
    walkdir(dir); 
} 
//detect files having these extensions and rename them 
public static final String[] TARGET_EXTENSIONS = { "gif"}; 
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]); 
        } 
       } 
      } 
     } 
    } 
} 

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

,這是我的去除方法點前綴,它不工作(沒有強制關閉) -

private String putDotBeforeFileName(File file) { 
    String fileName = file.getName(); 
    String fullPath = file.getAbsolutePath(); 
    int indexOfDot = fullPath.indexOf("."); 
    String myRequiredFileName = ""; 
    if (indexOfDot == 0 && fileName.length() > 1) { 
     myRequiredFileName = file.getParent() + "/" + fileName.substring(1); 
    } 
    try { 
     Runtime.getRuntime().exec(
       "mv " + file.getAbsolutePath() + " " + myRequiredFileName); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 
    return myRequiredFileName; 
} 
+1

你想轉換「my_file.j pg「改爲」my_filejpg「? – Darish

+0

no sir,我想將「.my_file.jpg」轉換爲「myfile.jpg」(刪除前綴不是擴展名) – patrecia

回答

1

試試這個代碼

private String removeDotBeforeFileName(File file) { 
     String fileName = file.getName(); 
     String fullPath = file.getAbsolutePath(); 
     String myRequiredFileName = ""; 
     if (fileName.length() > 1 && fullPath.charAt(0)=='.') { 
      myRequiredFileName = file.getParent() + "/" + fileName.substring(1); 
      file.renameTo(new File(myRequiredFileName)); 
     } 

     return myRequiredFileName; 
    } 
+0

如果你想添加任何東西,請告訴我:) – Darish

+0

哎,不幸的是你的代碼沒有刪除點前綴,它什麼也沒做 – patrecia

+0

「不能調用原始類型char」 – patrecia