プロプログラマ

プログラマーを職業としてます。 Flex,Air,C#,Oracle,HTML+JSの言語ノウハウを中心に情報発信していきます

[Java] テキストファイルかどうかを判別する

Javaで読み込むファイルがテキストファイルかどうかをチェックします。

テキストファイルであるかどうかを厳密に判定しようとすると、すべてのコードが想定した文字コードになっているかをチェックする必要があるかと思いますが、
この例では、コードをチェックして、00のコードがあればテキストファイルではないという判定をしています。
(文字コードに00はないので。)
たいていのバイナリファイルは、00のコードが含まれるため、ほぼこれでチェック可能です。
わざと00をつけないデータを作ったり、まれにそのようなデータがあれば、この判定は間違いを返してしまいます。

念のための確認というレベルであれば、これで問題ないと思います。

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;

public class Test {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		File dir = new File("C:/Windows");
		File[] files = dir.listFiles();

		for (File f : files) {
			if (f.isFile()) {
				System.out.println(f.getName() + "=" +  isTextFile(f.getAbsolutePath()));
			}
		}
	}

	/**
	 * テキストファイルかどうかを判定する
	 *
	 * @param filePath テキストファイル
	 * @return trueならテキストファイル falseならバイナリファイル
	 */
	public static boolean isTextFile(String filePath) {

		FileInputStream in = null;
		try {
			in = new FileInputStream(filePath);

			byte[] b = new byte[1];
			while (in.read(b, 0, 1) > 0) {
				if (b[0] == 0) {
					return false;
				}
			}
			return true;
		} catch (IOException e) {
			e.printStackTrace();
			return false;
		} finally {
			if (in != null) {
				try {
					in.close();
				} catch (IOException e) {
					e.printStackTrace();
				}
				in = null;
			}
		}
	}
}

例外処理がいまいちです。

 

== ランキングに参加しています。ぜひクリックお願いします ==

プログラム ブログランキングへ
にほんブログ村 IT技術ブログへ
にほんブログ村

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください