【Java】ファイル名から拡張子を取得する!(lastIndexOf/subString)

ファイル名から拡張子を取得するにはStringクラスのlastIndexOfメソッドStringクラスのsubStringメソッドを使用します。

StringクラスのlastIndexOfメソッドは、文字列の後ろから検索して最初に見つかった位置のインデックスを返すメソッドとなります。

また、StringクラスのsubStrigメソッドは、その文字列から部分文字列を抜き出すことができるメソッドとなります。

つまり、lastIndexOfでファイル名を後ろから「.」を検索し、そこからsubStrig()を使って部分文字列を抜き出すことでファイル名から拡張子を取得することができます。

今回はStringクラスのlastIndexOfメソッドとsubStrigメソッドを使って、ファイル名から拡張子を取得していきます。

lastIndexOfメソッドとは

StringクラスのlastIndexOfメソッドとは、文字列の後ろから検索して最初に見つかった位置のインデックスを返すメソッドです。
indexOfメソッドの逆バージョンだと思ってください。

lastIndexOfメソッドの書き方

StringクラスのlastIndexOfメソッドの構文は下記となります。

str1.lastIndexOfの()にパラメータとして検索文字を指定することで文字列の中から検索文字を末尾から検索し、見つかった場合は先頭から数えたインデックスを返します。

見つからなかった場合は「-1」を返します。

subStringメソッドとは

StringクラスのsubStringメソッドとは、その文字列から部分文字列を抜き出すことができるメソッドです。
例えば「元気ですか。」という文字列から「元気」という文字列だけを抜き出すことができるようになります。

subStringメソッドの書き方

StringクラスのsubStringメソッドの構文は下記となります。

subStrigの()に開始と終了のインデックスを両方指定することで、指定した開始インデックスから指定した終了インデックスまで切り出されます。
また、開始インデックスのみを指定すると、開始インテックスから最後の文字列まで切り出されます。

subStringメソッドについて詳しく知りたい場合はこちらをご参考ください。

ファイル名から拡張子を取得するサンプルコード

ファイル名から拡張子を取得するサンプルコードを紹介します。

「C¥work」以下に「fileA 」「fileB.txt」「fileC.java」「fileD.class」の4つのファイルを用意し、
Main.javaに下記のコードを入力し実行します。

出力結果

ファイル名:fileA 拡張子名:拡張子なし
ファイル名:fileB.txt 拡張子名:txt
ファイル名:fileC.java 拡張子名:java
ファイル名:fileD.class 拡張子名:class

lastIndexOfでファイル名を後ろから「.」を検索し、そこからsubStrig()を使って部分文字列を抜き出すことでファイル名から拡張子を取得し、「.」が見つからなかった場合は「拡張子なし」を取得しています。

また、listFilesは、ディレクトリ内にあるファイル一覧を取得する Fileクラスのメソッドとなります。

今回のポイント

lastIndexOfとsubStringでファイル名から拡張子を取得

ファイル名から拡張子を取得するにはStingクラスのlastIndexOfメソッドとStringクラスのsubStringメソッドを使用する。

⚫︎ StringクラスのlastIndexOfメソッドとStringクラスのsubStringメソッドを使用することで拡張子を取得することができる

⚫︎ StringクラスのlastIndexOfメソッドを使用する際には、取得したファイル名の拡張子である区切り文字(「.」)の位置を取得する

⚫︎ StringクラスのsubStringメソッドを使用する際にはパラメータに「拡張子の区切り文字の位置+1」を指定して、拡張子の区切り文字より後ろの文字列を取得する

関連記事

特定の文字が含まれるか調べるindexOfメソッドについてはこちらをご参考ください。

パスからファイル名を取得するgetNameメソッドについてはこちらをご参考ください。

Writer
壷井

壷井

株式会社flyhawkの壷井です。フライテックメディア事業部でのメディア運営・ライター業務なども担当。愛機はMac Book AirとThinkPad。好きな言語:swift、JS系(Node.js等)。好きなサーバー:AWS。受託開発やプログラミングスクールの運営をしております。ご気軽にお問い合わせください。

最新の案件情報

フリーランスエンジニアの案件探し