/** * Copyright (c)2010-2011 Enterprise Website Content Management System(EWCMS), All rights reserved. * EWCMS PROPRIETARY/CONFIDENTIAL. Use is subject to license terms. * http://www.ewcms.com */ package com.ewcms.common.io; import java.io.File; import java.io.FileInputStream; import java.io.InputStream; import org.apache.commons.lang.ArrayUtils; /** * 文件操作 * * @author 吴智俊 */ public class HtmlFileUtil { public static String normalizePath(String path) { path = path.replace('\\', '/'); path = HtmlStringUtil.replaceEx(path, "../", "/"); path = HtmlStringUtil.replaceEx(path, "./", "/"); if (path.endsWith("..")) path = path.substring(0, path.length() - 2); path = path.replaceAll("/+", "/"); return path; } public static File normalizeFile(File f) { String path = f.getAbsolutePath(); path = normalizePath(path); return new File(path); } public static String readText(File f) { f = normalizeFile(f); return readText(f, "UTF-8"); } public static String readText(File f, String encoding) { try { f = normalizeFile(f); InputStream is = new FileInputStream(f); String str = readText(is, encoding); is.close(); return str; } catch (Exception e) { e.printStackTrace(); return null; } } public static String readText(InputStream is, String encoding) { try { byte bs[] = readByte(is); if (encoding.equalsIgnoreCase("UTF-8") && HtmlStringUtil.hexEncode(ArrayUtils.subarray(bs, 0, 3)) .equals("efbbbf")) bs = ArrayUtils.subarray(bs, 3, bs.length); return new String(bs, encoding); } catch (Exception e) { e.printStackTrace(); return null; } } public static byte[] readByte(String fileName) { try { fileName = normalizePath(fileName); FileInputStream fis = new FileInputStream(fileName); byte r[] = new byte[fis.available()]; fis.read(r); fis.close(); return r; } catch (Exception e) { e.printStackTrace(); return null; } } public static byte[] readByte(File f) { try { f = normalizeFile(f); FileInputStream fis = new FileInputStream(f); byte r[] = readByte(((InputStream) (fis))); fis.close(); return r; } catch (Exception e) { e.printStackTrace(); return null; } } public static byte[] readByte(InputStream is) { try { byte r[] = new byte[is.available()]; is.read(r); return r; } catch (Exception e) { e.printStackTrace(); return null; } } }