【Java】ファイル名から拡張子を取得する!(lastIndexOf/subString)
ファイル名から拡張子を取得するにはStringクラスのlastIndexOfメソッドとStringクラスのsubStringメソッドを使用します。
StringクラスのlastIndexOfメソッドは、文字列の後ろから検索して最初に見つかった位置のインデックスを返すメソッドとなります。
また、StringクラスのsubStrigメソッドは、その文字列から部分文字列を抜き出すことができるメソッドとなります。
つまり、lastIndexOfでファイル名を後ろから「.」を検索し、そこからsubStrig()を使って部分文字列を抜き出すことでファイル名から拡張子を取得することができます。
今回はStringクラスのlastIndexOfメソッドとsubStrigメソッドを使って、ファイル名から拡張子を取得していきます。
目次
lastIndexOfメソッドとは
StringクラスのlastIndexOfメソッドとは、文字列の後ろから検索して最初に見つかった位置のインデックスを返すメソッドです。
indexOfメソッドの逆バージョンだと思ってください。
lastIndexOfメソッドの書き方
StringクラスのlastIndexOfメソッドの構文は下記となります。
1 |
文字列.lastIndexOf(検索文字) |
str1.lastIndexOfの()にパラメータとして検索文字を指定することで文字列の中から検索文字を末尾から検索し、見つかった場合は先頭から数えたインデックスを返します。
見つからなかった場合は「-1」を返します。
subStringメソッドとは
StringクラスのsubStringメソッドとは、その文字列から部分文字列を抜き出すことができるメソッドです。
例えば「元気ですか。」という文字列から「元気」という文字列だけを抜き出すことができるようになります。
subStringメソッドの書き方
StringクラスのsubStringメソッドの構文は下記となります。
1 |
String.subString(開始インデックス[, 終了インデックス]); |
subStrigの()に開始と終了のインデックスを両方指定することで、指定した開始インデックスから指定した終了インデックスまで切り出されます。
また、開始インデックスのみを指定すると、開始インテックスから最後の文字列まで切り出されます。
subStringメソッドについて詳しく知りたい場合はこちらをご参考ください。
ファイル名から拡張子を取得するサンプルコード
ファイル名から拡張子を取得するサンプルコードを紹介します。
「C¥work」以下に「fileA 」「fileB.txt」「fileC.java」「fileD.class」の4つのファイルを用意し、
Main.javaに下記のコードを入力し実行します。
例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
// ファイル名から拡張子を取得する import java.io.File; public class Main { public static void main(String[] args) throws Exception { // targetディレクトリにあるファイル一覧を取得する File[] files = new File("C:/work").listFiles(); for (File file : files) { //対象がファイルでない場合は処理しない if (!file.isFile()) { continue; } // ファイル名を取得する String fileName = file.getName(); //拡張子の有無を調べてから拡張子を取得する int idx = fileName.lastIndexOf("."); String extName = (-1 != idx) ? fileName.substring(idx + 1) : "拡張子なし"; // ファイル名と拡張子を表示する System.out.println( "ファイル名:" + fileName + "\t拡張子名:" + extName); } } } |
出力結果
ファイル名: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メソッドについてはこちらをご参考ください。
ST
株式会社flyhawkのSTです。フライテックメディア事業部でのメディア運営・ライター業務なども担当。愛機はMac Book AirとThinkPad。好きな言語:swift、JS系(Node.js等)。好きなサーバー:AWS。受託開発やプログラミングスクールの運営をしております。ご気軽にお問い合わせください。