JavaマスターJavaプログラムサンプル集ファイル処理のサンプル → ファイルの拡張子を取り除く

ファイルの拡張子を取り除く

ファイル名から拡張子を取り除くメソッドをご紹介します。

ファイル名の拡張子を変えてコピーしたりする際に、ファイル名から 拡張子を取り除く作業が発生します。 そのようなときに使える便利なメソッドです。

なお、このサンプルでは、拡張子がないファイル名の場合、および ドットで始まるファイル名(UNIX/Linuxでは、隠しファイルとして 扱われます)については、何も処理をせずにそのままの ファイル名を返しています。

samples/file/RemoveFileExtension.java - Eclipse SDK
package samples.file;

import java.io.File;

public class RemoveFileExtension {
  public static String removeFileExtension(String filename) {
    int lastDotPos = filename.lastIndexOf('.');

    if (lastDotPos == -1) {
      return filename;
    else if (lastDotPos == 0) {
      return filename;
    else {
      return filename.substring(0, lastDotPos);
    }
  }

  public static void main(String[] args) {

    // 拡張子を含む場合は、拡張子を取り除きます。
    System.out.println(removeFileExtension("test.txt"));

    // 拡張子を含まない場合は、そのままです。
    System.out.println(removeFileExtension("hosts"));

    // ドットで始まるファイル名の場合は、そのままです。
    System.out.println(removeFileExtension(".bashrc"));
    
    // ファイルオブジェクトから拡張子を除く方法です。
    File file = new File("/JavaMaster/bin/samples/file/RemoveFileExtension.class");
    String filename = file.getName();
    System.out.println(removeFileExtension(filename));
  }
}

コマンド プロンプト

C:\JavaMaster\bin>java -cp . samples.file.RemoveFileExtension 
test
hosts
.bashrc
RemoveFileExtension

なお、ファイルオブジェクト(File)のオブジェクトについて変換を 行いたいときは、上記のように、いったんgetNameメソッドで ディレクトリ名を除くファイル名部分を取得し、このメソッドに そのファイル名を渡せばよいでしょう。