2013-06-25 77 views
1

好吧,所以有很多文件需要重命名,它們都在同一個目錄中。目錄中有多個文件夾,其中包含文件,而不需要重命名。如何用Java重命名目錄中的所有文件?

我需要做的是用下劃線替換文件名中的任何空格。

我是java的初學者,所以如果只有一個文件,並且我可以用Java指定文件,我可能會自己做到這一點,但在這種情況下我不能。

例如,如果文件名是「文件號」,我需要將其重命名爲「file_number_one」。 我也想保持擴展不變。有一堆文件都有不同的擴展名。

非常感謝你的幫助,如果有任何問題,我會盡力回答他們。

編輯:

好吧,我想通了,但不是在Java中。 使用這些網站herehere我想出了使用windown PowerShell。

基本上打開PowerShell中,cd到該目錄,然後輸入:

dir -Recurse | Rename-Item –NewName { $_.name –replace 「 「,」_」 } 

這將替換所有空格與目錄中的所有文件和文件夾的下劃線。 對不起,我不明白在Java中,但這是一個似乎工作的替代方案。

+1

爲什麼不使用腳本語言,這樣做呢?我會想得更快。 –

+0

如何?就像我說的,我是一個初學者,並不是所有人都熟悉編碼和腳本。 – Kyle2595

+0

如果您在Windows上工作,AutoIt會立即執行此操作。但大多數腳本語言都可以。做到這一點你需要:1)下載語言,2)閱讀教程,3)嘗試編寫你需要的代碼。我不知道有任何替代品。這對於Java來說幾乎相同。你會想要下載這個捆綁TYT建議的實用程序庫,閱讀文檔,並試圖弄清楚。 –

回答

3
  1. 如果我是你,我會用FilenameUtils這個。它有一種方法可以在不使用擴展名的情況下使用名爲getBaseName的方法獲取文件名。
  2. 一旦擁有基本名稱,只需使用String.replaceAll替換帶下劃線的空格。
  3. Rename該文件的結果。
  4. 要獲得要操作的文件列表,可以使用FileUtils。它有一些名爲listFiles的方法可用於此目的。
+0

正是 - 不要重新發明輪子! 1+ –

0

http://people.apache.org/~jochen/commons-io/site/apidocs/org/apache/commons/io/DirectoryWalker.html

重命名落實到String normalizeName(String)及用途:

public class FileRenamer extends DirectoryWalker { 

    public List rename(File startDirectory) { 
     List results = new LinkedList(); 
     walk(startDirectory, results); 
     return results; 
    } 

    protected boolean handleDirectory(File directory, int depth, Collection results) { 
     return true; 
    } 

    protected void handleFile(File file, int depth, Collection results) { 
    String newName = convert(file.getName()); 
    File file2 = new File(file.getParentFile(), newName) 
    file.renameTo(file2) 
    results.add(file); 
    } 
} 

new FileRenamer.rename(baseDirectory); 
相關問題