Java Is Text File isTextFile(File file)

Here you can find the source of isTextFile(File file)

Description

Checks a File and tries to figure if the file is a text or a binary file.
Keep in mind that binary files are those that contains at least one non-printable character.

License

Open Source License

Parameter

Parameter Description
file a parameter

Return

true when the file is pretty problably text, false if the file is binary.

Declaration

public static boolean isTextFile(File file) 

Method Source Code

//package com.java2s;
/* gvSIG. Sistema de Informaci?n Geogr?fica de la Generalitat Valenciana
 *
 * Copyright (C) 2004 IVER T.I. and Generalitat Valenciana.
 *
 * This program is free software; you can redistribute it and/or
 * modify it under the terms of the GNU General Public License
 * as published by the Free Software Foundation; either version 2
 * of the License, or (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
 *
 * For more information, contact:/*from  w  w  w  .j a  v  a 2 s. c  om*/
 *
 *  Generalitat Valenciana
 *   Conselleria d'Infraestructures i Transport
 *   Av. Blasco Ib??ez, 50
 *   46010 VALENCIA
 *   SPAIN
 *
 *      +34 963862235
 *   gvsig@gva.es
 *      www.gvsig.gva.es
 *
 *    or
 *
 *   IVER T.I. S.A
 *   Salamanca 50
 *   46005 Valencia
 *   Spain
 *
 *   +34 963163400
 *   dac@iver.es
 */

import java.io.File;
import java.io.FileNotFoundException;

import java.io.FileReader;
import java.io.IOException;

public class Main {
    private static String characters;

    /**
     * Checks a File and tries to figure if the file is a text or a binary file.<br>
     * Keep in mind that binary files are those that contains at least one
     * non-printable character.
     *
     * @param file
     * @return <b>true</b> when the file is <b>pretty problably</b> text,
     * <b>false</b> if the file <b>is</b> binary.
     */
    public static boolean isTextFile(File file) {
        return isTextFile(file, 1024);
    }

    /**
     * Checks a File and tries to figure if the file is a text or a binary file.<br>
     * Keep in mind that binary files are those that contains at least one
     * non-printable character.
     *
     * @param file
     * @param byteAmount, number of bytes to check.
     * @return <b>true</b> when the file is <b>pretty problably</b> text,
     * <b>false</b> if the file <b>is</b> binary.
     */
    public static boolean isTextFile(File file, int byteAmount) {
        int umbral = byteAmount;
        try {
            FileReader fr = new FileReader(file);
            for (int i = 0; i < umbral; i++) {
                int c = fr.read();
                if (c == -1) {
                    // End of file. If we reach this
                    // everything before is printable data.
                    return true;
                }
                char ch = (char) c;
                if (characters.indexOf(ch) == -1) {
                    // We've found a non-printable character.
                    // Then we'll assume that this file is binary.
                    return false;
                }
            }
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return true;
    }
}

Related

  1. isText(File file)
  2. isText(File file)
  3. isTextFile(File f)
  4. isTextFile(File f, int length)
  5. isTextFile(File file)