Java examples for File Path IO:Text File
get File Charset
/**/*from w w w. jav a2 s. c o m*/ * baiweigang.cn * Copyright (c) 1984-2014 All Rights Reserved. */ //package com.java2s; import java.io.BufferedInputStream; import java.io.File; import java.io.FileInputStream; import java.io.IOException; public class Main { public static String getCharset(String pathName) { File file = new File(pathName); if (!file.exists()) { return ""; } String charset = "GBK"; byte[] first3Bytes = new byte[3]; BufferedInputStream bis = null; try { boolean checked = false; bis = new BufferedInputStream(new FileInputStream(file)); bis.mark(0); int read = bis.read(first3Bytes, 0, 3); if (read == -1) return charset; if (first3Bytes[0] == (byte) 0xFF && first3Bytes[1] == (byte) 0xFE) { charset = "UTF-16LE"; checked = true; } else if (first3Bytes[0] == (byte) 0xFE && first3Bytes[1] == (byte) 0xFF) { charset = "UTF-16BE"; checked = true; } else if (first3Bytes[0] == (byte) 0xEF && first3Bytes[1] == (byte) 0xBB && first3Bytes[2] == (byte) 0xBF) { charset = "UTF-8"; checked = true; } bis.reset(); if (!checked) { // int len = 0; // int loc = 0; while ((read = bis.read()) != -1) { // loc++; if (read >= 0xF0) break; if (0x80 <= read && read <= 0xBF) // BF?GBK break; if (0xC0 <= read && read <= 0xDF) { read = bis.read(); if (0x80 <= read && read <= 0xBF) // ? (0xC0 - 0xDF) (0x80 // - 0xBF),GB continue; else break; } else if (0xE0 <= read && read <= 0xEF) {// read = bis.read(); if (0x80 <= read && read <= 0xBF) { read = bis.read(); if (0x80 <= read && read <= 0xBF) { charset = "UTF-8"; break; } else break; } else break; } } //System.out.println( loc + " " + Integer.toHexString( read ) ); } bis.close(); } catch (Exception e) { // e.printStackTrace(); } finally { try { bis.close(); } catch (IOException e) { } } return charset; } }