Javaで拡張子なしのファイル名を取得
この投稿では、Javaで拡張子なしでファイル名を取得する方法について説明します。ソリューションは、最後のドットの前にファイル名を返す必要があります。
1.使用する String.substring()
方法
アイデアは、 lastIndexOf()
ドットの最後の出現のインデックスを取得するメソッド(.
)指定されたファイル名で。次に、を使用して拡張子なしでファイル名を抽出できます substring()
以下に示すように、メソッド:
1 2 3 4 5 6 7 8 |
public class Main { public static void main(String[] args) { String fileName = "filename.txt"; String fileNameWithoutExtension = fileName.substring(0, fileName.lastIndexOf('.')); System.out.println(fileNameWithoutExtension); } } |
上記のコードは java.lang.StringIndexOutOfBoundsException
ファイル名に拡張子がない場合。この場合は、の戻り値を確認することで対処できます lastIndexOf()
を返すメソッド -1
ドットが発生しない場合。これを以下に示します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
public class Main { private static String removeExtension(String fileName) { int lastIndex = fileName.lastIndexOf('.'); if (lastIndex != -1) { fileName = fileName.substring(0, lastIndex); } return fileName; } public static void main(String[] args) { String fileName = "filename.txt"; String fileNameWithoutExtension = removeExtension(fileName); System.out.println(fileNameWithoutExtension); } } |
2. ApacheCommonsIOの使用
別のオプションは、 FilenameUtils
ApacheCommonsIOライブラリによって提供されるクラス。それは提供します removeExtension()
ファイル名から拡張子を削除するメソッド。 fileNameにパスが含まれている場合、パスは削除されません。
1 2 3 4 5 6 7 8 9 10 |
import org.apache.commons.io.FilenameUtils; public class Main { public static void main(String[] args) { String fileName = "filename.txt"; String fileNameWithoutExtension = FilenameUtils.removeExtension(fileName); System.out.println(fileNameWithoutExtension); } } |
または、 getBaseName()
からの方法 FilenameUtils
ファイル名(存在する場合)から拡張子とともにパスを追加で削除するクラス。それはに似ています basename
Unixコマンド。
1 2 3 4 5 6 7 8 9 10 |
import org.apache.commons.io.FilenameUtils; public class Main { public static void main(String[] args) { String fileName = "filename.txt"; String fileNameWithoutExtension = FilenameUtils.getBaseName(fileName); System.out.println(fileNameWithoutExtension); } } |
3.Guavaの使用
プロジェクトでApacheCommonsを介してGuavaライブラリを使用する場合は、 getNameWithoutExtension()
からの方法 Files
クラス。拡張子やパスを除いたファイル名を返します basename
Unixコマンド。
1 2 3 4 5 6 7 8 9 10 |
import com.google.common.io.Files; public class Main { public static void main(String[] args) { String fileName = "filename.txt"; String fileNameWithoutExtension = Files.getNameWithoutExtension(fileName); System.out.println(fileNameWithoutExtension); } } |
4.正規表現の使用
別のオプションは、正規表現を使用することです \.\w+$
とともに replaceAll()
最後のドットとそれに続くすべての文字を削除するメソッド。
1 2 3 4 5 6 7 8 |
public class Main { public static void main(String[] args) { String fileName = "filename.txt"; String fileNameWithoutExtension = fileName.replaceAll("\\.\\w+$", ""); System.out.println(fileNameWithoutExtension); } } |
これで、Javaで拡張子なしのファイル名を取得できます。