Javaを用いて指定のファイルがテキストファイルかどうかを判定する方法を調べたので備忘録としてまとめます。
Apatch Tikaを用いてファイルのMIME TYPEを判定してもらう方法が手軽にできてよかったです。
Mavenのライブラリをインポートします。
pom.xml
<dependency>
<groupId>org.apache.tika</groupId>
<artifactId>tika-core</artifactId>
<version>2.9.2</version>
</dependency>
Apache Tikaを使ってファイルがテキストファイルかどうかを判定するコード例です。
import org.apache.tika.Tika;
import java.io.File;
import java.io.IOException;
public class FileTypeChecker {
public static boolean isTextFile(File file) {
Tika tika = new Tika();
try {
String mimeType = tika.detect(file);
System.out.println("Detected MIME type: " + mimeType);
return mimeType.startsWith("text/");
} catch (IOException e) {
e.printStackTrace();
}
return false;
}
public static void main(String[] args) {
File file = new File("sample.txt");
if (isTextFile(file)) {
System.out.println(file.getName() + " is a text file.");
} else {
System.out.println(file.getName() + " is not a text file.");
}
}
}
コード例の概要
-
Tika tika = new Tika();
を使用してTikaのインスタンスを作成します。 -
tika.detect(file)
メソッドを使って、ファイルのMIMEタイプを検出します。たとえば、テキストファイルであればtext/plain
などが返されます。
jsonファイルはapplication/json
となるので適宜判定処理を修正しましょう。 - MIMEタイプが「
text/
」で始まるかどうかを確認