ファイルの拡張子の判別方法

ファイルの拡張子が必要なものであるかを判断する場合、Fileクラスに拡張子を取得するメソッドがないので結局ファイル名から拡張子を取得するのですが、その時に気にした方が良いかも知れないことのメモ。

File#getName()よりもFile#getPath()を用いた方が良い

FileクラスはStringフィールドでpathを保持しており、getPath()はそれをそのまま返しているのですが、getName()はsubstringしたものを返します。
この場合は、ファイル名のみを切り出してもらう必要はないため、余計なオブジェクトを生成しないgetPath()を用いた方が良い。
ちなみにFileクラスはimmutableです。

拡張子だけではなくちゃんとファイルかどうかも調べよう

Fileクラスは名前こそFileですが、その実態はファイルパスを表すクラスです。当然それがディレクトリをさしていることもあります。
ファイルがちゃんとファイルとして扱えるかどうかはFile#isFile()で取得できます。めんどくさがらずに呼んであげましょう。
ちなみにFileクラスのisFile()、isDirectory()、canRead()、canWrite()などのメソッドはファイルパスの指し示す対象が存在しない場合、falseを返します。

例:拡張子がjarであり読込可能なファイルかどうかのチェック

public boolean isJarFile(File file) {
	return file.isFile() && file.canRead() && file.getPath().endsWith(".jar");
}

substringを呼んで余計なStringを生成したくないのでので、拡張子の判断にはendsWithを用いています。
チェックする拡張子が一つであり、かつ大文字小文字を無視しなくてよい場合にはこれで十分です。
大文字小文字を無視する場合はregionMatches()を用いれば大文字小文字を無視した部分一致のチェックができますが、可読性を考えると、素直にsubstringしてequalsIgnoreCaseしたほうが良いかと。