import java.io.File;
import java.io.FileInputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Properties;
import java.util.Set;
import java.util.Map.Entry;
import org.jdom2.Document;
import org.jdom2.Element;
import org.jdom2.JDOMException;
import org.jdom2.input.SAXBuilder;
/**
* 文件处理类,解析文件方法,解析的文件类型:properties文件,xml文件。
* @author lukmao
* @since 2013-08-19
* @category 工具类
* @version 1.1.0
*/
public class FileUtil {
private static int number = 0;
/**
* 去除文件BOM头
* @param poFile 文件
* @return 去除BOM头的文件输入流
*/
public static final FileInputStream getNoBomInputStream(File poFile){
final byte[] bom = new byte[] { (byte)0xEF, (byte)0xBB, (byte)0xBF };
byte[] head = new byte[3];
try {
FileInputStream is = new FileInputStream(poFile);
is.read(head);
if (bom[0] == head[0] && bom[1] == head[1] && bom[2] == head[2]){
return is;
}else{
is.close();
return new FileInputStream(poFile);
}
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
/**
* 通过给定的properties文件获取其键值对列表
* @param file 给定的properties文件
* @return 键值对列表
* @throws IOException IO异常
*/
public static Map<String,String> readProperties(F