Java でファイルの拡張子を取得する方法
-
Java の
getExtension()メソッドを使ってファイルの拡張子を取得する -
Java の
lastIndexOf()メソッドでファイルの拡張子を取得する - Java で文字列解析を用いてファイルの拡張子を取得する
-
Java の
replaceAll()メソッドを用いたファイルの拡張子の取得 -
Java で
contains()とlastIndexOf()メソッドを用いてファイルの拡張子を取得する例 - Java の三項演算子を用いたファイルの拡張子の取得
-
Java の
stream()メソッドを用いたファイルの拡張子の取得 - Java で Regex を用いてファイルの拡張子を取得する
このチュートリアルでは、Java でファイルの拡張子を取得する方法を紹介し、トピックを理解するためのコード例をいくつか挙げています。
Java の getExtension() メソッドを使ってファイルの拡張子を取得する
ファイルの拡張子を取得するには、FilenameUtils クラスの getExtension() メソッドを用いることができます。このメソッドはファイルの拡張子を返します。このメソッドは Apache commons ライブラリに属しているので、プロジェクトで JAR を利用するには Apache の公式サイトからライブラリをダウンロードする必要があります。
import org.apache.commons.io.FilenameUtils;
public class SimpleTesting {
public static void main(String[] args) {
String fileName = "student-records.pdf";
String fe = FilenameUtils.getExtension(fileName);
System.out.println("File extension is : " + fe);
}
}
出力:
File extension is : pdf
Java の lastIndexOf() メソッドでファイルの拡張子を取得する
組み込みのメソッドを使用したくない場合は、lastIndexOf() メソッドを使用してファイルの拡張子を取得するコード例を使用してください。これは文字列メソッドのみを使用する最もシンプルで簡単な方法です。以下の例を参照してください。
public class SimpleTesting {
public static void main(String[] args) {
String fileName = "student-records.pdf";
String fe = "";
int i = fileName.lastIndexOf('.');
if (i > 0) {
fe = fileName.substring(i + 1);
}
System.out.println("File extension is : " + fe);
}
}
出力:
File extension is : pdf
Java で文字列解析を用いてファイルの拡張子を取得する
これもまた、(ファイルパスの中にドット(.) がある場合)を含むいくつかのシナリオを含んだ解決策です。このメソッドは、ファイルパスの間にドット(.)があっても正確な結果を返します。以下の例を参照してください。
public class SimpleTesting {
public static void main(String[] args) {
String fileName = "folder\s.gr\fg\student-records.pdf";
String fe = "";
char ch;
int len;
if (fileName == null || (len = fileName.length()) == 0 || (ch = fileName.charAt(len - 1)) == '/'
|| ch == '\\' || ch == '.') {
fe = "";
}
int dotInd = fileName.lastIndexOf('.'),
sepInd = Math.max(fileName.lastIndexOf('/'), fileName.lastIndexOf('\\'));
if (dotInd <= sepInd) {
fe = "";
} else {
fe = fileName.substring(dotInd + 1).toLowerCase();
}
System.out.println("File extension is : " + fe);
}
}
出力:
File extension is : pdf
Java の replaceAll() メソッドを用いたファイルの拡張子の取得
以下の例で行ったように、replaceAll() メソッドを使ってファイルの拡張子を取得することができます。このメソッドでは正規表現を使用し、結果を変数に集めます。
public class SimpleTesting {
public static void main(String[] args) {
String fileName = "folder\s.gr\fg\student-records.pdf";
String fe = "";
fe = fileName.replaceAll("^.*\\.(.*)$", "$1");
System.out.println("File extension is : " + fe);
}
}
出力:
File extension is : pdf
Java で contains() と lastIndexOf() メソッドを用いてファイルの拡張子を取得する例
contains() メソッドは指定した文字が文字列に含まれているかどうかを調べ、lastIndexOf() メソッドは指定した文字のインデックス値を返し、substring() メソッドに渡してファイルの拡張子を取得します。このコードでは、これらのメソッドを用いてファイルの拡張子を取得しています。以下の例を参照してください。
public class SimpleTesting {
public static void main(String[] args) {
String fileName = "folder\s.gr\fg\student-records.pdf";
String fe = "";
if (fileName.contains("."))
fe = fileName.substring(fileName.lastIndexOf(".") + 1);
System.out.println("File extension is : " + fe);
}
}
出力:
File extension is : pdf
Java の三項演算子を用いたファイルの拡張子の取得
三項演算子(?, :)に慣れているのであれば、substring() や lastIndexOf() メソッドと併用してください。これによりコードの行数を減らし、1つの文で結果を返すことができます。
public class SimpleTesting {
public static void main(String[] args) {
String fileName = "folder\s.gr\fg\student-records.pdf";
String fe = "";
if (fileName.contains(".")) {
int i = fileName.lastIndexOf('.');
fe = i > 0 ? fileName.substring(i + 1) : "";
}
System.out.println("File extension is : " + fe);
}
}
出力:
File extension is : pdf
Java の stream() メソッドを用いたファイルの拡張子の取得
ファイル名をストリームに変換するには Arrays クラスの stream() メソッドを用い、ファイル名をドット(.)から区切るには split() メソッドを用います。以下の例を参照してください。
import java.util.Arrays;
public class SimpleTesting {
public static void main(String[] args) {
String fileName = "folder\s.gr\fg\student-records.pdf";
String fe = "";
if (fileName.contains(".")) {
fe = Arrays.stream(fileName.split("\\.")).reduce((a, b) -> b).orElse(null);
}
System.out.println("File extension is : " + fe);
}
}
出力:
File extension is : pdf
Java で Regex を用いてファイルの拡張子を取得する
これも regex パッケージを利用した解決策です。この Java の例では、Pattern クラスの compile() と matcher() メソッドを用いてファイルの拡張子を取得しています。以下の例を参照してください。
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class SimpleTesting {
public static void main(String[] args) {
String fileName = "folder\s.gr\fg\student-records.pdf";
String fe = "";
final Pattern PATTERN = Pattern.compile("(.*)\\.(.*)");
Matcher m = PATTERN.matcher(fileName);
if (m.find()) {
fe = m.group(2);
}
System.out.println("File extension is : " + fe);
}
}
出力:
File extension is : pdf
関連記事 - Java IO
- Java のテキストファイルにテキストを追加する
- Java での相対パス
- Java で Inputstream をバイト配列に変換
- Java で InputStream を文字列に変換する
- Java でフォルダの全ファイルを読み込む方法