0

名前を変更する必要があるファイルがたくさんあり、それらはすべて同じディレクトリにあります。ディレクトリには、名前を変更する必要があるファイルを含む複数のフォルダーがあります。

私がする必要があるのは、ファイル名のスペースをアンダースコアに置き換えることです。

私はJavaの初心者なので、ファイルが1つだけあり、Javaでファイルを指定できれば、これを自分で行うことができるかもしれませんが、この状況ではできません。

たとえば、ファイル名が「ファイル番号 1」の場合、名前を「file_number_one」に変更する必要があります。また、拡張子はそのままにしておきたいと思います。さまざまな拡張子を持つファイルがたくさんあります。

ご質問がありましたら、できる限りお答えいたします。

編集:

わかりましたが、Java ではわかりませんでした。ここここでこれらの Web サイトを使用して、windown PowerShell を使用して理解しました。

基本的に、PowerShell を開き、cd でディレクトリに移動して、次のように入力します。

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

これにより、ディレクトリ内のすべてのファイルとフォルダーで、すべてのスペースがアンダースコアに置き換えられます。申し訳ありませんが、Javaで理解できませんでしたが、これはうまくいくように見える代替手段です。

4

2 に答える 2

3
  1. 私があなたなら、これにはFilenameUtilsを使用します。getBaseNameという名前のメソッドを使用して、拡張子なしでファイル名を取得する方法があります。
  2. ベース名を取得したら、使用String.replaceAllしてスペースをアンダースコアに置き換えます。
  3. その結果でファイルの 名前を変更します。
  4. 操作するファイルのリストを取得するには、FileUtilsを使用できます。listFilesそのために使用できる名前の付いたメソッドがいくつかあります。
于 2013-06-25T21:30:13.687 に答える
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 );
于 2013-06-26T01:12:19.420 に答える