JAVA 工具类大集合

来源:互联网 发布:怎么描述淘宝小铺 编辑:程序博客网 时间:2024/05/17 03:42
  1. 身份证号码验证、
  2. 正则表达式大全、
  3. 常用日期工具类、
  4. 图片高报真缩放工具类、
  5. 文件类工具类

1、身份证号码验证

package xxx;import java.text.ParseException;import java.text.SimpleDateFormat;import java.util.Calendar;import java.util.Date;import java.util.Random;/** * 身份证验证的工具(支持15位或18位省份证) * 身份证号码结构: * <p> * 根据〖中华人民共和国国家标准GB11643-1999〗中有关公民身份号码的规定,公民身份号码是特征组合码,由十七位数字本体码和一位数字校验码组成。 * 排列顺序从左至右依次为:6位数字地址码,8位数字出生日期码,3位数字顺序码和1位数字校验码。 * <p> * 地址码(前6位):表示对象常住户口所在县(市、镇、区)的行政区划代码,按GB/T2260的规定执行。 * <li>前1、2位数字表示:所在省份的代码;</li> * <li>第3、4位数字表示:所在城市的代码;</li> * <li>第5、6位数字表示:所在区县的代码;</li> * <p> * 出生日期码,(第7位 - 14位):表示编码对象出生年、月、日,按GB按GB/T7408的规定执行,年、月、日代码之间不用分隔符。 * <p> * 顺序码(第15位至17位):表示在同一地址码所标示的区域范围内,对同年、同月、同日出生的人编订的顺序号,顺序码的奇数分配给男性,偶数分配给女性。 * <li>第15、16位数字表示:所在地的派出所的代码;</li> * <li>第17位数字表示性别:奇数表示男性,偶数表示女性;</li> * <li>第18位数字是校检码:也有的说是个人信息码,一般是随计算机的随机产生,用来检验身份证的正确性。校检码可以是0~9的数字,有时也用x表示。</li> * <p> * 校验码(第18位数): * <p> * 十七位数字本体码加权求和公式 s = sum(Ai*Wi), i = 0..16,先对前17位数字的权求和; * Ai:表示第i位置上的身份证号码数字值.Wi:表示第i位置上的加权因子.Wi: 7 9 10 5 8 4 2 1 6 3 7 9 10 5 8 4 2; * 计算模 Y = mod(S, 11) * 通过模得到对应的模 Y: 0 1 2 3 4 5 6 7 8 9 10 校验码: 1 0 X 9 8 7 6 5 4 3 2 * <p> * 计算步骤: * 1.将前17位数分别乘以不同的系数。从第1位到第17位的系数分别为:7 9 10 5 8 4 2 1 6 3 7 9 10 5 8 4 2 * 2.将这17位数字和系数相乘的结果相加。 * 3.用加出来和除以11,看余数是多少 * 4.余数只可能有0 1 2 3 4 5 6 7 8 9 10这11个数字,分别对应的最后一位身份证的号码为:1 0 X 9 8 7 6 5 4 3 * <p> */public class IDCardUtil{    /**     * <pre>     * 省、直辖市代码表:     *     11 : 北京  12 : 天津  13 : 河北   14 : 山西  15 : 内蒙古     *     21 : 辽宁  22 : 吉林  23 : 黑龙江 31 : 上海  32 : 江苏     *     33 : 浙江  34 : 安徽  35 : 福建   36 : 江西  37 : 山东     *     41 : 河南  42 : 湖北  43 : 湖南   44 : 广东  45 : 广西  46 : 海南     *     50 : 重庆  51 : 四川  52 : 贵州   53 : 云南  54 : 西藏     *     61 : 陕西  62 : 甘肃  63 : 青海   64 : 宁夏  65 : 新疆     *     71 : 台湾     *     81 : 香港  82 : 澳门     *     91 : 国外     * </pre>     */    final static String CITY_CODE[] = {"11", "12", "13", "14", "15", "21", "22", "23", "31", "32", "33", "34", "35", "36", "37", "41", "42", "43", "44", "45", "46", "50", "51", "52", "53", "54", "61", "62", "63", "64", "65", "71", "81", "82", "91"};    /**     * 效验码     */    final static char[] PARITYBIT = {'1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2'};    /**     * 加权因子     * Math.pow(2,  i - 1) % 11     */    final static int[] POWER = {7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2};    /**     * 身份证验证     *     * @param id 号码内容     * @return 是否有效     */    public final static boolean isValid(String id)    {        if (id == null)            return false;        int len = id.length();        if (len != 15 && len != 18)            return false;        //校验区位码        if (!validCityCode(id.substring(0, 2)))            return false;        //校验生日        if (!validDate(id))            return false;        if (len == 15)            return true;        //校验位数        return validParityBit(id);    }    private static boolean validParityBit(String id)    {        char[] cs = id.toUpperCase().toCharArray();        int power = 0;        for (int i = 0; i < cs.length; i++)        {            //最后一位可以是X            if (i == cs.length - 1 && cs[i] == 'X')                break;            // 非数字            if (cs[i] < '0' || cs[i] > '9')                return false;            // 加权求和            if (i < cs.length - 1)            {                power += (cs[i] - '0') * POWER[i];            }        }        return PARITYBIT[power % 11] == cs[cs.length - 1];    }    private static boolean validDate(String id)    {        try        {            String birth = id.length() == 15 ? "19" + id.substring(6, 12) : id.substring(6, 14);            SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");            Date birthDate = sdf.parse(birth);            if (!birth.equals(sdf.format(birthDate)))                return false;        }        catch (ParseException e)        {            return false;        }        return true;    }    private static boolean validCityCode(String cityCode)    {        for (String code : CITY_CODE)        {            if (code.equals(cityCode))                return true;        }        return false;    }    /**     * 将15位的身份证转成18位身份证     *     * @param id     * @return     */    final public static String id15To18(String id)    {        if (id == null || id.length() != 15)            return null;        if (!isValid(id))            return null;        String id17 = id.substring(0, 6) + "19" + id.substring(6);        int power = 0;        char[] cs = id17.toCharArray();        for (int i = 0; i < cs.length; i++)        {            power += (cs[i] - '0') * POWER[i];        }        // 将前17位与第18位校验码拼接        return id17 + String.valueOf(PARITYBIT[power % 11]);    }    /**     * 生成随机整数     * <p>     *     * @param min     * @param max     * @return     */    public static int rand(int min, int max)    {        Random random = new Random();        return random.nextInt(max + 1) % (max - min + 1) + min;    }    public final static String generateID()    {        // 地址码        String body = CITY_CODE[rand(0, CITY_CODE.length - 1)] + "0101";        // 出生年        String y = String.valueOf(rand(1950, Calendar.getInstance().get(Calendar.YEAR)));        String m = String.valueOf(rand(1, 12));        if (m.length() == 1)            m = "0" + m;        String d = String.valueOf(rand(1, 28));        if (d.length() == 1)            d = "0" + d;        String idx = String.valueOf(rand(1, 999));        if (idx.length() == 1)            idx = "00" + idx;        else if (idx.length() == 2)            idx = "0" + idx;        body += y + m + d + idx;        // 累加body部分与位置加权的积        int power = 0;        char[] cs = body.toCharArray();        for (int i = 0; i < cs.length; i++)        {            power += (cs[i] - '0') * POWER[i];        }        // 得出校验码        return body + String.valueOf(PARITYBIT[power % 11]);    }}

2、正则表达式大全

package xxxxx;import org.apache.commons.lang.StringUtils;public class ValidUtils {    private static final String mobile = "^(13|15|18|17|16)[0-9]{9}$";    private static final String codeAndMobile = "^\\+[0-9]{2}\\-(13|15|18|17|16)[0-9]{9}$";    /**整数*/    private static final String intege="^-?[1-9]\\d*$";        /** 正整数*/    private static final String intege1="^[1-9]\\d*$";                     /** 负整数*/    private static final String intege2="^-[1-9]\\d*$";                        /** 数字*/    private static final String num="^([+-]?)\\d*\\.?\\d+$";               /** 正数(正整数 + 0)*/    private static final String num1="^[1-9]\\d*|0$";                      /** 负数(负整数 + 0)*/    private static final String num2="^-[1-9]\\d*|0$";                     /** 浮点数*/    private static final String decmal="^([+-]?)\\d*\\.\\d+$";             /** 正浮点数*/    private static final String decmal1="^[1-9]\\d*.\\d*|0.\\d*[1-9]\\d*$";        /** 负浮点数*/    private static final String decmal2="^-([1-9]\\d*.\\d*|0.\\d*[1-9]\\d*)$";    /** 浮点数*/    private static final String decmal3="^-?([1-9]\\d*.\\d*|0.\\d*[1-9]\\d*|0?.0+|0)$";     /** 非负浮点数(正浮点数 + 0)*/    private static final String decmal4="^[1-9]\\d*.\\d*|0.\\d*[1-9]\\d*|0?.0+|0$";     /**非正浮点数(负浮点数 + 0) */    private static final String decmal5="^(-([1-9]\\d*.\\d*|0.\\d*[1-9]\\d*))|0?.0+|0$";    /** 邮件*/    private static final String email="^\\w+((-\\w+)|(\\.\\w+))*\\@[A-Za-z0-9]+((\\.|-)[A-Za-z0-9]+)*\\.[A-Za-z0-9]+$";     /** 颜色*/    private static final String color="^[a-fA-F0-9]{6}$";                  /** url*/    private static final String url="^http[s]?=\\/\\/([\\w-]+\\.)+[\\w-]+([\\w-./?%&=]*)?$";       /** 仅中文*/    private static final String chinese="^[\\u4E00-\\u9FA5\\uF900-\\uFA2D]+$";                     /** 仅ACSII字符*/    private static final String ascii="^[\\x00-\\xFF]+$";                  /**邮编 */    private static final String zipcode="^\\d{6}$";                            /** ip地址*/    private static final String ip4="^(25[0-5]|2[0-4]\\d|[0-1]\\d{2}|[1-9]?\\d)\\.(25[0-5]|2[0-4]\\d|[0-1]\\d{2}|[1-9]?\\d)\\.(25[0-5]|2[0-4]\\d|[0-1]\\d{2}|[1-9]?\\d)\\.(25[0-5]|2[0-4]\\d|[0-1]\\d{2}|[1-9]?\\d)$";     /** 非空*/    private static final String notempty="^\\S+$";                         /**图片 */    private static final String picture="(.*)\\.(jpg|bmp|gif|ico|pcx|jpeg|tif|png|raw|tga)$";      /** 压缩文件*/    private static final String rar="(.*)\\.(rar|zip|7zip|tgz)$";                                  /** 日期*/    private static final String date="^\\d{4}(\\-|\\/|\\.)\\d{1,2}\\1\\d{1,2}$";                       /** QQ号码*/    private static final String qq="^[1-9]*[1-9][0-9]*$";                  /** 电话号码的函数(包括验证国内区号;国际区号;分机号)*/    private static final String tel="^(([0\\+]\\d{2,3}-)?(0\\d{2,3})-)?(\\d{7,8})(-(\\d{1,}))?$";      /** 用来用户注册。匹配由数字、26个英文字母或者下划线组成的字符串*/    private static final String username="^\\w+$";                         /** 字母*/    private static final String letter="^[A-Za-z]+$";                      private static final String letterAndSpace="^[A-Za-z ]+$";                     /** 大写字母*/    private static final String letter_u="^[A-Z]+$";                       /** 小写字母*/    private static final String letter_l="^[a-z]+$";                       /** 身份证*/    private static final String idcard="^[1-9]([0-9]{14}|[0-9]{17})$";     /**判断字符串是否为浮点数*/    private static final String isFloat="^[-]?\\d+(\\.\\d+)?$";    /**判断字符串是否为正浮点数*/    private static final String isUFloat="^\\d+(\\.\\d+)?$";    /**判断是否是整数*/    private static final String isInteger="^[-]?\\d+$";    /**判断是否是正整数*/    private static final String isUInteger="^\\d+$";    /**判断车辆Vin码*/    private static final String isCarVin="^[1234567890WERTYUPASDFGHJKLZXCVBNM]{13}[0-9]{4}$";    /** 手机号 */    public static boolean isMobile(String input){        return matches(mobile, input);    }    public static boolean isCodeAndMobile(String input){        return matches(codeAndMobile, input);    }    /** 整数 */    public static boolean isIntege(String input){        return matches(intege, input);    }    /** 正整数 */    public static boolean isintege1(String input){        return matches(intege1, input);    }    /** 负整数*/    public static boolean isIntege2(String input){        return matches(intege2, input);    }    /** 数字 */    public static boolean isNum(String input){        return matches(num, input);    }    /** 正数(正整数 + 0) */    public static boolean isNum1(String input){        return matches(num1, input);    }    /** 负数(负整数 + 0)*/    public static boolean isNum2(String input){        return matches(num2, input);    }    /** 浮点数*/    public static boolean isDecmal(String input){        return matches(decmal, input);    }    /** 正浮点数*/    public static boolean isDecmal1(String input){        return matches(decmal1, input);    }    /** 负浮点数*/    public static boolean isDecmal2(String input){        return matches(decmal2, input);    }    /**浮点数 */    public static boolean isDecmal3(String input){        return matches(decmal3, input);    }    /** 非负浮点数(正浮点数 + 0)*/    public static boolean isDecmal4(String input){        return matches(decmal4, input);    }    /** 非正浮点数(负浮点数 + 0)*/    public static boolean isDecmal5(String input){        return matches(decmal5, input);    }    /** 邮件*/    public static boolean isEmail(String input){        return matches(email, input);    }    /** 颜色*/    public static boolean isColor(String input){        return matches(color, input);    }    /** url*/    public static boolean isUrl(String input){        return matches(url, input);    }    /** 中文*/    public static boolean isChinese(String input){        return matches(chinese, input);    }    /** ascii码*/    public static boolean isAscii(String input){        return matches(ascii, input);    }    /** 邮编*/    public static boolean isZipcode(String input){        return matches(zipcode, input);    }    /** IP地址*/    public static boolean isIP4(String input){        return matches(ip4, input);    }    /** 非空*/    public static boolean isNotEmpty(String input){        return matches(notempty, input);    }    /** 图片*/    public static boolean isPicture(String input){        return matches(picture, input);    }    /** 压缩文件*/    public static boolean isRar(String input){        return matches(rar, input);    }    /** 日期*/    public static boolean isDate(String input){        return matches(date, input);    }    /** qq*/    public static boolean isQQ(String input){        return matches(qq, input);    }    /** 电话号码的函数(包括验证国内区号;国际区号;分机号)*/    public static boolean isTel(String input){        return matches(tel, input);    }    /** 用来用户注册。匹配由数字、26个英文字母或者下划线组成的字符串*/    public static boolean isUserName(String input){        return matches(username, input);    }    /**字母*/    public static boolean isLetter(String input){        return matches(letter, input);    }    public static boolean isLetterAndSpace(String input){        return matches(letterAndSpace, input);    }    /** 小写字母*/    public static boolean isLowLetter(String input){        return matches(letter_l, input);    }    /** 大写字母*/    public static boolean isUpperLetter(String input){        return matches(letter_u, input);    }    /** 身份证*/    public static boolean isIDCard(String input){        return matches(idcard, input);    }    public static boolean isFloat(String input){        return matches(isFloat, input);    }    public static boolean isUFloat(String input){        return matches(isUFloat, input);    }    public static boolean isInteger(String input){        return matches(isInteger, input);    }    public static boolean isUInteger(String input){        return matches(isUInteger, input);    }    public static boolean isCarVin(String carVin){        return matches(isCarVin, carVin);    }    public static boolean matches(String regex,String input){        if(StringUtils.isBlank(input)) return false;        if(input.matches(regex))return true;        return false;    }    public static void main(String[] args) {        /*System.out.println(isInteger("1"));        System.out.println(isInteger("0"));        System.out.println(isInteger("-1"));        System.out.println(isInteger("1.0"));        System.out.println("--------------------");        System.out.println(isUInteger("-1"));        System.out.println(isUInteger("0"));        System.out.println(isUInteger("10"));        System.out.println(isUInteger("1.3"));*/        System.out.println(isLetterAndSpace("tai  wan"));    }}

3、常用日期工具类

package xxxxx;import java.text.ParseException;import java.text.SimpleDateFormat;import java.util.Calendar;import java.util.Date;import java.util.GregorianCalendar;import java.util.regex.Pattern;public class DateUtil {    private static final int[] DAY_OF_MONTH = new int[] { 31, 28, 31, 30, 31,            30, 31, 31, 30, 31, 30, 31 };    /**     *      * @param strDate     *            输入日期     * @param dayNum     *            相隔天数 正整数表示前推 ,负整数表示后推     * @return 日期字符串     * @throws ParseException     */    public static String getDifferDate(String strDate, int dayNum)            throws ParseException {        SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd");        Date date = sf.parse(strDate);        Calendar c = Calendar.getInstance();        c.setTime(date);        c.add(Calendar.DATE, dayNum);        String sqldate = sf.format(c.getTime());        return sqldate;    }    /**     * 取得当前日期相隔dayNum天的日期     *      * @param strDate     * @param dayNum     * @return     * @throws ParseException     */    public static String getDifferDate(int dayNum) throws ParseException {        Date date = new Date();        SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd");        Calendar c = Calendar.getInstance();        c.setTime(date);        c.add(Calendar.DATE, dayNum);        String strDate = sf.format(c.getTime());        return strDate;    }    /**     * 把日期字符串转换为util.date类型     *      * @param strDate     *            日期字符串(yyyy-MM-dd)     *      *      * @return java.sql.date 类型     */    public static java.util.Date getDate(String strDate) {        return java.sql.Date.valueOf(strDate);    }    /**     * 校验日期YYYY-MM-DD格式是否正确     *      * @param date     * @return     */    public static boolean checkDateForm(String date) {        if (date == null || "".equals(date))            return false;        String eL = "^((\\d{2}(([02468][048])|([13579][26]))[\\-\\/\\s]?((((0?[13578])|(1[02]))[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])|(3[01])))|(((0?[469])|(11))[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])|(30)))|(0?2[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])))))|(\\d{2}(([02468][1235679])|([13579][01345789]))[\\-\\/\\s]?((((0?[13578])|(1[02]))[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])|(3[01])))|(((0?[469])|(11))[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])|(30)))|(0?2[\\-\\/\\s]?((0?[1-9])|(1[0-9])|(2[0-8]))))))";        return Pattern.compile(eL).matcher(date).matches();    }    /**     * 取得指定天数后的时间     *      * @param date     *            基准时间     * @param dayAmount     *            指定天数,允许为负数     * @return 指定天数后的时间     */    public static Date addDay(Date date, int dayAmount) {        if (date == null) {            return null;        }        Calendar calendar = Calendar.getInstance();        calendar.setTime(date);        calendar.add(Calendar.DATE, dayAmount);        return calendar.getTime();    }    /**     * 取得指定小时数后的时间     *      * @param date     *            基准时间     * @param hourAmount     *            指定小时数,允许为负数     * @return 指定小时数后的时间     */    public static Date addHour(Date date, int hourAmount) {        if (date == null) {            return null;        }        Calendar calendar = Calendar.getInstance();        calendar.setTime(date);        calendar.add(Calendar.HOUR, hourAmount);        return calendar.getTime();    }    /**     * 取得指定分钟数后的时间     *      * @param date     *            基准时间     * @param minuteAmount     *            指定分钟数,允许为负数     * @return 指定分钟数后的时间     */    public static Date addMinute(Date date, int minuteAmount) {        if (date == null) {            return null;        }        Calendar calendar = Calendar.getInstance();        calendar.setTime(date);        calendar.add(Calendar.MINUTE, minuteAmount);        return calendar.getTime();    }    /**     * 比较两日期对象中的小时和分钟部分的大小.     *      * @param date     *            日期对象1, 如果为 <code>null</code> 会以当前时间的日期对象代替     * @param anotherDate     *            日期对象2, 如果为 <code>null</code> 会以当前时间的日期对象代替     * @return 如果日期对象1大于日期对象2, 则返回大于0的数; 反之返回小于0的数; 如果两日期对象相等, 则返回0.     */    public static int compareHourAndMinute(Date date, Date anotherDate) {        if (date == null) {            date = new Date();        }        if (anotherDate == null) {            anotherDate = new Date();        }        Calendar cal = Calendar.getInstance();        cal.setTime(date);        int hourOfDay1 = cal.get(Calendar.HOUR_OF_DAY);        int minute1 = cal.get(Calendar.MINUTE);        cal.setTime(anotherDate);        int hourOfDay2 = cal.get(Calendar.HOUR_OF_DAY);        int minute2 = cal.get(Calendar.MINUTE);        if (hourOfDay1 > hourOfDay2) {            return 1;        } else if (hourOfDay1 == hourOfDay2) {            // 小时相等就比较分钟            return minute1 > minute2 ? 1 : (minute1 == minute2 ? 0 : -1);        } else {            return -1;        }    }    /**     * 比较两日期对象的大小, 忽略秒, 只精确到分钟.     *      * @param date     *            日期对象1, 如果为 <code>null</code> 会以当前时间的日期对象代替     * @param anotherDate     *            日期对象2, 如果为 <code>null</code> 会以当前时间的日期对象代替     * @return 如果日期对象1大于日期对象2, 则返回大于0的数; 反之返回小于0的数; 如果两日期对象相等, 则返回0.     */    public static int compareIgnoreSecond(Date date, Date anotherDate) {        if (date == null) {            date = new Date();        }        if (anotherDate == null) {            anotherDate = new Date();        }        Calendar cal = Calendar.getInstance();        cal.setTime(date);        cal.set(Calendar.SECOND, 0);        cal.set(Calendar.MILLISECOND, 0);        date = cal.getTime();        cal.setTime(anotherDate);        cal.set(Calendar.SECOND, 0);        cal.set(Calendar.MILLISECOND, 0);        anotherDate = cal.getTime();        return date.compareTo(anotherDate);    }    /**     * 取得当前时间的字符串表示,格式为2006-01-10 20:56:30.756     *      * @return 当前时间的字符串表示     */    public static String currentDate2String() {        return date2String(new Date());    }    /**     * 取得当前时间的字符串表示,格式为2006-01-10     *      * @return 当前时间的字符串表示     */    public static String currentDate2StringByDay() {        return date2StringByDay(new Date());    }    /**     * 取得今天的最后一个时刻     *      * @return 今天的最后一个时刻     */    public static Date currentEndDate() {        return getEndDate(new Date());    }    /**     * 取得今天的第一个时刻     *      * @return 今天的第一个时刻     */    public static Date currentStartDate() {        return getStartDate(new Date());    }    /**     * 把时间转换成字符串,格式为2006-01-10 20:56:30.756     *      * @param date     *            时间     * @return 时间字符串     */    public static String date2String(Date date) {        return date2String(date, "yyyy-MM-dd HH:mm:ss.SSS");    }    /**     * 按照指定格式把时间转换成字符串,格式的写法类似yyyy-MM-dd HH:mm:ss.SSS     *      * @param date     *            时间     * @param pattern     *            格式     * @return 时间字符串     */    public static String date2String(Date date, String pattern) {        if (date == null) {            return null;        }        return (new SimpleDateFormat(pattern)).format(date);    }    /**     * 把时间转换成字符串,格式为2006-01-10     *      * @param date     *            时间     * @return 时间字符串     */    public static String date2StringByDay(Date date) {        return date2String(date, "yyyy-MM-dd");    }    /**     * 把时间转换成字符串,格式为2006-01-10 20:56     *      * @param date     *            时间     * @return 时间字符串     */    public static String date2StringByMinute(Date date) {        return date2String(date, "yyyy-MM-dd HH:mm");    }    /**     * 把时间转换成字符串,格式为2006-01-10 20:56:30     *      * @param date     *            时间     * @return 时间字符串     */    public static String date2StringBySecond(Date date) {        return date2String(date, "yyyy-MM-dd HH:mm:ss");    }    /**     * 根据某星期几的英文名称来获取该星期几的中文数. <br>     * e.g. <li>monday -> 一</li> <li>sunday -> 日</li>     *      * @param englishWeekName     *            星期的英文名称     * @return 星期的中文数     */    public static String getChineseWeekNumber(String englishWeekName) {        if ("monday".equalsIgnoreCase(englishWeekName)) {            return "一";        }        if ("tuesday".equalsIgnoreCase(englishWeekName)) {            return "二";        }        if ("wednesday".equalsIgnoreCase(englishWeekName)) {            return "三";        }        if ("thursday".equalsIgnoreCase(englishWeekName)) {            return "四";        }        if ("friday".equalsIgnoreCase(englishWeekName)) {            return "五";        }        if ("saturday".equalsIgnoreCase(englishWeekName)) {            return "六";        }        if ("sunday".equalsIgnoreCase(englishWeekName)) {            return "日";        }        return null;    }    /**     * 根据指定的年, 月, 日等参数获取日期对象.     *      * @param year     *            年     * @param month     *            月     * @param date     *            日     * @return 对应的日期对象     */    public static Date getDate(int year, int month, int date) {        return getDate(year, month, date, 0, 0);    }    /**     * 根据指定的年, 月, 日, 时, 分等参数获取日期对象.     *      * @param year     *            年     * @param month     *            月     * @param date     *            日     * @param hourOfDay     *            时(24小时制)     * @param minute     *            分     * @return 对应的日期对象     */    public static Date getDate(int year, int month, int date, int hourOfDay,            int minute) {        return getDate(year, month, date, hourOfDay, minute, 0);    }    /**     * 根据指定的年, 月, 日, 时, 分, 秒等参数获取日期对象.     *      * @param year     *            年     * @param month     *            月     * @param date     *            日     * @param hourOfDay     *            时(24小时制)     * @param minute     *            分     * @param second     *            秒     * @return 对应的日期对象     */    public static Date getDate(int year, int month, int date, int hourOfDay,            int minute, int second) {        Calendar cal = Calendar.getInstance();        cal.set(year, month - 1, date, hourOfDay, minute, second);        cal.set(Calendar.MILLISECOND, 0);        return cal.getTime();    }    /**     * 取得某个日期是星期几,星期日是1,依此类推     *      * @param date     *            日期     * @return 星期几     */    public static int getDayOfWeek(Date date) {        Calendar cal = Calendar.getInstance();        cal.setTime(date);        return cal.get(Calendar.DAY_OF_WEEK);    }    /**     * 获取某天的结束时间, e.g. 2005-10-01 23:59:59.999     *      * @param date     *            日期对象     * @return 该天的结束时间     */    public static Date getEndDate(Date date) {        if (date == null) {            return null;        }        Calendar cal = Calendar.getInstance();        cal.setTime(date);        cal.set(Calendar.HOUR_OF_DAY, 23);        cal.set(Calendar.MINUTE, 59);        cal.set(Calendar.SECOND, 59);        cal.set(Calendar.MILLISECOND, 999);        return cal.getTime();    }    /**     * 取得一个月最多的天数     *      * @param year     *            年份     * @param month     *            月份,0表示1月,依此类推     * @return 最多的天数     */    public static int getMaxDayOfMonth(int year, int month) {        if (month == 1 && isLeapYear(year)) {            return 29;        }        return DAY_OF_MONTH[month];    }    /**     * 得到指定日期的下一天     *      * @param date     *            日期对象     * @return 同一时间的下一天的日期对象     */    public static Date getNextDay(Date date) {        return addDay(date, 1);    }    /**     * 获取某天的起始时间, e.g. 2005-10-01 00:00:00.000     *      * @param date     *            日期对象     * @return 该天的起始时间     */    public static Date getStartDate(Date date) {        if (date == null) {            return null;        }        Calendar cal = Calendar.getInstance();        cal.setTime(date);        cal.set(Calendar.HOUR_OF_DAY, 0);        cal.set(Calendar.MINUTE, 0);        cal.set(Calendar.SECOND, 0);        cal.set(Calendar.MILLISECOND, 0);        return cal.getTime();    }    /**     * 根据日期对象来获取日期中的时间(HH:mm:ss).     *      * @param date     *            日期对象     * @return 时间字符串, 格式为: HH:mm:ss     */    public static String getTime(Date date) {        if (date == null) {            return null;        }        SimpleDateFormat format = new SimpleDateFormat("HH:mm:ss");        return format.format(date);    }    /**     * 根据日期对象来获取日期中的时间(HH:mm).     *      * @param date     *            日期对象     * @return 时间字符串, 格式为: HH:mm     */    public static String getTimeIgnoreSecond(Date date) {        if (date == null) {            return null;        }        SimpleDateFormat format = new SimpleDateFormat("HH:mm");        return format.format(date);    }    /**     * 判断是否是闰年     *      * @param year     *            年份     * @return 是true,否则false     */    public static boolean isLeapYear(int year) {        Calendar calendar = Calendar.getInstance();        return ((GregorianCalendar) calendar).isLeapYear(year);    }    /**     * 取得一年中的第几周。     *      * @param date     * @return     */    public static int getWeekOfYear(Date date) {        Calendar cal = Calendar.getInstance();        cal.setTime(date);        return cal.get(Calendar.WEEK_OF_YEAR);    }    /**     * 获取上周的指定星期的日期。     *      * @param dayOfWeek     *            星期几,取值范围是 {@link Calendar#MONDAY} - {@link Calendar#SUNDAY}     */    public static Date getDateOfPreviousWeek(int dayOfWeek) {        if (dayOfWeek > 7 || dayOfWeek < 1) {            throw new IllegalArgumentException("参数必须是1-7之间的数字");        }        return getDateOfRange(dayOfWeek, -7);    }    /**     * 获取本周的指定星期的日期。     *      * @param dayOfWeek     *            星期几,取值范围是 {@link Calendar#MONDAY} - {@link Calendar#SUNDAY}     */    public static Date getDateOfCurrentWeek(int dayOfWeek) {        if (dayOfWeek > 7 || dayOfWeek < 1) {            throw new IllegalArgumentException("参数必须是1-7之间的数字");        }        return getDateOfRange(dayOfWeek, 0);    }    /**     * 获取下周的指定星期的日期。     *      * @param dayOfWeek     *            星期几,取值范围是 {@link Calendar#MONDAY} - {@link Calendar#SUNDAY}     */    public static Date getDateOfNextWeek(int dayOfWeek) {        if (dayOfWeek > 7 || dayOfWeek < 1) {            throw new IllegalArgumentException("参数必须是1-7之间的数字");        }        return getDateOfRange(dayOfWeek, 7);    }    private static Date getDateOfRange(int dayOfWeek, int dayOfRange) {        Calendar cal = Calendar.getInstance();        cal.set(Calendar.DAY_OF_WEEK, dayOfWeek);        cal.set(Calendar.DATE, cal.get(Calendar.DATE) + dayOfRange);        cal.set(Calendar.HOUR_OF_DAY, 0);        cal.set(Calendar.MINUTE, 0);        cal.set(Calendar.SECOND, 0);        cal.set(Calendar.MILLISECOND, 0);        return cal.getTime();    }    public static void main(String[] args) {        // Date date =DateUtil.getDate("2017-01-17");        // Date date = new Date();        SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");        System.out.println(sf.format(new Date()));    }}

4、图片高报真缩放工具类

package xxxx;import java.awt.image.BufferedImage;import java.io.File;import java.io.FileOutputStream;import javax.imageio.ImageIO;import com.sun.image.codec.jpeg.JPEGCodec;import com.sun.image.codec.jpeg.JPEGEncodeParam;import com.sun.image.codec.jpeg.JPEGImageEncoder;public class NarrowImage {    /**     * @param im     *            原始图像     * @param resizeTimes     *            倍数,比如0.5就是缩小一半,0.98等等double类型     * @return 返回处理后的图像     */    public BufferedImage zoomImage(String src) {        BufferedImage result = null;        try {            File srcfile = new File(src);            if (!srcfile.exists()) {                System.out.println("文件不存在");            }            BufferedImage im = ImageIO.read(srcfile);            /* 原始图像的宽度和高度 */            int width = im.getWidth();            int height = im.getHeight();            // 压缩计算            float resizeTimes = 0.3f; /* 这个参数是要转化成的倍数,如果是1就是转化成1倍 */            /* 调整后的图片的宽度和高度 */            int toWidth = (int) (width * resizeTimes);            int toHeight = (int) (height * resizeTimes);            /* 新生成结果图片 */            result = new BufferedImage(toWidth, toHeight, BufferedImage.TYPE_INT_RGB);            result.getGraphics().drawImage(im.getScaledInstance(toWidth, toHeight, java.awt.Image.SCALE_SMOOTH), 0, 0,                    null);        } catch (Exception e) {            System.out.println("创建缩略图发生异常" + e.getMessage());        }        return result;    }    public boolean writeHighQuality(BufferedImage im, String fileFullPath) {        try {            /* 输出到文件流 */            FileOutputStream newimage = new FileOutputStream(fileFullPath);            JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(newimage);            JPEGEncodeParam jep = JPEGCodec.getDefaultJPEGEncodeParam(im);            /* 压缩质量 */            jep.setQuality(0.9f, true);            encoder.encode(im, jep);            /* 近JPEG编码 */            newimage.close();            return true;        } catch (Exception e) {            return false;        } finally {            // 压缩完毕后,删除原文件            File file = new File(fileFullPath);            // 如果文件路径所对应的文件存在,并且是一个文件,则直接删除            if (file.exists() && file.isFile()) {                if (file.delete()) {                    System.out.println("删除文件" + fileFullPath + "成功!");                } else {                    System.out.println("删除文件" + fileFullPath + "失败!");                }            } else {                System.out.println("删除文件失败:" + fileFullPath + "不存在!");            }        }    }    /**     * 测试图片压缩     *      * @param args     */    public static void main(String[] args) {        String inputFoler = "C:\\Users\\PC\\Desktop\\bcfb1f83-ee77-4e82-bf2f-48905b1089b1.jpg";        /* 这儿填写你存放要缩小图片的文件夹全地址 */        String outputFolder = "C:\\Users\\PC\\Desktop\\T-bcfb1f83-ee77-4e82-bf2f-48905b1089b1.jpg";        /* 这儿填写你转化后的图片存放的文件夹 */        NarrowImage narrowImage = new NarrowImage();        narrowImage.writeHighQuality(narrowImage.zoomImage(inputFoler), outputFolder);    }}

5、文件类工具类

package xxxx;import org.springframework.util.Assert;import java.io.*;import java.math.BigDecimal;import java.util.LinkedList;import java.util.Properties;/** * 文件操作工具类 * */public final class FileUtil {    /**     * @param path path     * @return p     * @throws IOException io     * @author jiangzeyin     */    public static Properties getProperties(String path) throws IOException {        Properties prop = new Properties();        InputStream in = new FileInputStream(path);        prop.load(in);        return prop;    }    /**     * 格式化单位     *     * @param size size     * @return str     */    public static String getFormatSize(long size) {        double kiloByte = size / 1024;        if (kiloByte < 1) {            return size + "Byte";        }        double megaByte = kiloByte / 1024;        if (megaByte < 1) {            BigDecimal result1 = new BigDecimal(Double.toString(kiloByte));            return result1.setScale(2, BigDecimal.ROUND_HALF_UP).toPlainString() + "KB";        }        double gigaByte = megaByte / 1024;        if (gigaByte < 1) {            BigDecimal result2 = new BigDecimal(Double.toString(megaByte));            return result2.setScale(2, BigDecimal.ROUND_HALF_UP).toPlainString() + "MB";        }        double teraBytes = gigaByte / 1024;        if (teraBytes < 1) {            BigDecimal result3 = new BigDecimal(Double.toString(gigaByte));            return result3.setScale(2, BigDecimal.ROUND_HALF_UP).toPlainString() + "GB";        }        BigDecimal result4 = new BigDecimal(teraBytes);        return result4.setScale(2, BigDecimal.ROUND_HALF_UP).toPlainString() + "TB";    }    /**     * 判断文件是否存在     *     * @param path path     * @return boolean     */    public static boolean exists(String path) {        File f = new File(path);        return f.exists();    }    /**     * 创建文件路径     *     * @param path path     * @return boolean     * @author jiangzeyin     */    public static boolean mkdirs(String path) {        return mkdirs(new File(path), path.endsWith("/"));    }    /**     * @param file   file     * @param isPath isPath     * @return boolean     * @author jiangzeyin     */    public static boolean mkdirs(File file, boolean isPath) {        if (file == null)            return false;        if (isPath)            return file.mkdirs();        else            return file.getParentFile().mkdirs();    }    public static boolean mkdirs(File file) {        return mkdirs(file, false);    }    /**     * 读取文件全部内容     *     * @param file     file     * @param encoding encoding     * @return str     * @throws IOException io     */    public static String readToString(File file, String encoding) throws IOException {        BufferedReader br;        StringBuffer stringBuffer = null;        br = new BufferedReader(new InputStreamReader(new FileInputStream(file), encoding));        String line = null;        stringBuffer = new StringBuffer();        while ((line = br.readLine()) != null) {            stringBuffer.append(line);        }        br.close();        return stringBuffer.toString();// 返回文件内容,默认编码    }    public static String readToString(File file) throws IOException {        return readToString(file, "UTF-8");    }    public static String getFileEncode(String path) throws IOException {        String charset = "asci";        byte[] first3Bytes = new byte[3];        boolean checked = false;        BufferedInputStream bis = new BufferedInputStream(new FileInputStream(path));        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 = "Unicode";// UTF-16LE            checked = true;        } else if (first3Bytes[0] == (byte) 0xFE && first3Bytes[1] == (byte) 0xFF) {            charset = "Unicode";// UTF-16BE            checked = true;        } else if (first3Bytes[0] == (byte) 0xEF && first3Bytes[1] == (byte) 0xBB && first3Bytes[2] == (byte) 0xBF) {            charset = "UTF8";            checked = true;        }        bis.reset();        if (!checked) {            while ((read = bis.read()) != -1) {                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;                }            }            // TextLogger.getLogger().info(loc + " " +            // Integer.toHexString(read));        }        bis.close();        return charset;    }    public static String readFile(String path) throws IOException {        // 判断文件是否存在        File file = new File(path);        if (!file.exists()) {            return null;        }        String data = null;        // 获取文件编码格式        String code = FileUtil.getFileEncode(path);        InputStreamReader isr = null;        // 根据编码格式解析文件        if ("asci".equals(code)) {            // 这里采用GBK编码,而不用环境编码格式,因为环境默认编码不等于操作系统编码            // code = System.getProperty("file.encoding");            code = "GBK";        }        isr = new InputStreamReader(new FileInputStream(file), code);        // 读取文件内容        int length = -1;        char[] buffer = new char[1024];        StringBuffer sb = new StringBuffer();        while ((length = isr.read(buffer, 0, 1024)) != -1) {            sb.append(buffer, 0, length);        }        data = new String(sb);        isr.close();        return data;    }    /**     * 读取文件     *     * @param fileName fileName     * @param encoding encoding     * @return strng     * @throws Exception e     * @author jiangzeyin     */    public static String readToString(String fileName, String encoding) throws Exception {        File file = new File(fileName);        Long filelength = file.length();        byte[] filecontent = new byte[filelength.intValue()];        FileInputStream in = new FileInputStream(file);        in.read(filecontent);        in.close();        return new String(filecontent, encoding);    }    /**     * 读取文件全部内容     * <p>     * 默认为UTF-8     *     * @param fileName fileName     * @return str     * @throws Exception e     * @author jiangzeyin     */    public static String readToString(String fileName) throws Exception {        return readToString(fileName, "UTF-8");    }    /**     * 写文件     *     * @param fileName fileName     * @param content  content     * @throws IOException io     * @author jiangzeyin     */    public static void writeFile(String fileName, String content) throws IOException {        appendFileContext(fileName, content, false);    }    /**     * 添加文件内容     *     * @param fileName file     * @param content  c     * @throws IOException io     * @author jiangzeyin     */    public static void appendFileContext(String fileName, String content) throws IOException {        appendFileContext(fileName, content, true);    }    /**     * 追加文件内容     *     * @param fileName fileName     * @param content  c     * @param append   是否是追加     * @throws IOException io     * @author jiangzeyin     */    public static void appendFileContext(String fileName, String content, boolean append) throws IOException {        File file = new File(fileName);        file.getParentFile().mkdirs();        Writer out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(file), "UTF8"));        if (content != null)            out.write(content);        out.close();    }    public static boolean writeInputStream(InputStream inputStream, String path) throws IOException {        return writeInputStream(inputStream, new File(path));    }    /**     * @param inputStream inp     * @param file        file     * @return boolean     * @throws IOException io     */    public static boolean writeInputStream(InputStream inputStream, File file) throws IOException {        Assert.notNull(inputStream);        Assert.notNull(file);        mkdirs(file);        DataOutputStream outputStream = null;        try {            outputStream = new DataOutputStream(new FileOutputStream(file));            int len = inputStream.available();            //判断长度是否大于1M            if (len <= 1024 * 1024) {                byte[] bytes = new byte[len];                inputStream.read(bytes);                outputStream.write(bytes);            } else {                int byteCount = 0;                //1M逐个读取                byte[] bytes = new byte[1024 * 1024];                while ((byteCount = inputStream.read(bytes)) != -1) {                    outputStream.write(bytes, 0, byteCount);                }            }        } finally {            if (inputStream != null)                inputStream.close();            if (outputStream != null)                outputStream.close();        }        return true;    }    /**     * 判断流的字符串格式     *     * @param ins ins     * @return str     * @throws IOException io     */    public static String getCharset(InputStream ins) throws IOException {        BufferedInputStream bin = new BufferedInputStream(ins);        int p = (bin.read() << 8) + bin.read();        String code = null;        switch (p) {            case 0xefbb:                code = "UTF-8";                break;            case 0xfffe:                code = "Unicode";                break;            case 0xfeff:                code = "UTF-16BE";                break;            default:                code = "GBK";        }        ins.close();        bin.close();        return code;    }    /**     * 获取文件 编码     *     * @param fileName fileName     * @return str     * @throws IOException io     * @author jiangzeyin     */    public static String getFileCharset(String fileName) throws IOException {        FileInputStream ins = new FileInputStream(fileName);        return getCharset(ins);    }    public static String getFilePath(String path) {        File file = new File(path);        return getFilePath(file);    }    public static String getFilePath(File file) {        return clearPath(file.getParent());    }    /**     * 获取文件后缀     *     * @param filename file     * @return str     * @author jiangzeyin     */    public static String getFileExt(String filename) {        String ext = "";        int index = filename.lastIndexOf(".");        if (index == -1) {            return "";        }        ext = filename.substring(index + 1);        return ext;    }    public static String clearPath(String input) {        input = input.replace('\\', '/');        return clearPath_(input);    }    /**     * 获取文件名     *     * @param filename file     * @return s     * @author jiangzeyin     */    public static String getFileName(String filename) {        String ext = "";        int index = filename.lastIndexOf("/");        if (index == -1) {            return filename;        }        ext = filename.substring(index + 1);        return ext;    }    private static String clearPath_(String input) {        int from = 0;        int j = input.indexOf("://");        if (j != -1) {            from = j + 3;        }        int i = input.indexOf("//", from);        if (i == -1) {            return input;        }        String input_ = input.substring(0, i) + "/" + input.substring(i + 2);        return clearPath_(input_);    }    /**     * 递归删除目录下的所有文件及子目录下所有文件     *     * @param dir 将要删除的文件目录     * @return boolean Returns "true" if all deletions were successful. If a     * deletion fails, the method stops attempting to delete and returns     * "false".     */    public static boolean deleteDir(File dir) {        if (dir.isDirectory()) {            String[] children = dir.list();            // 递归删除目录中的子目录下            for (int i = 0; i < (children != null ? children.length : 0); i++) {                boolean success = deleteDir(new File(dir, children[i]));                if (!success) {                    return false;                }            }        }        // 目录此时为空,可以删除        return dir.delete();    }    /**     * 获取指定目录下的所有文件     *     * @param path path     * @return LinkedList     * @author XiangZhongBao     */    public static LinkedList<File> getFolderFiles(String path) {        File file = new File(path);        if (!file.exists())            return null;        if (!file.isDirectory())            return null;        File[] files = file.listFiles();        if (files == null)            return null;        LinkedList<File> linkedList = new LinkedList<>();        for (File item : files) {            if (item.isDirectory()) {                LinkedList<File> tempFile = getFolderFiles(item.getPath());                if (tempFile != null)                    linkedList.addAll(tempFile);            } else {                linkedList.add(item);            }        }        return linkedList;    }    /**     * @param dir dir     * @return boolean     * @author jiangzeyin     */    public static boolean deleteDir(String dir) {        return deleteDir(new File(dir));    }}
原创粉丝点击