java web 项目 常用 小工具类 ~~~~
【摘要】 java web 项目 常用 小工具类 ~~~~
java web 项目 常用 小工具类 ~~~~
一 、DateUtil 日期工具类
package com.devframe.common.util; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Calendar; import java.util.Date; import java.util.List; /** * @author zhangkai * @ClassName: DateUtil * @Description: 日期工具类 * @date 2017年9月22日 上午8:52:33 */ public class DateUtil { /** * SimpleDateFormat不是线程安全的. 在多线程并行处理的情况下, 会得到非预期的值. 这个错误非常普遍! * <p>所以只给定格式,自己new<p/> * "yyyy-MM-dd": 2017-09-22<br> * "yyyy-MM-dd hh:mm:ss": 2017-09-22 9:27:41<br> * "yyyy-MM-dd hh:mm:ss EE": 2017-09-22 9:27:41 星期五<br> * "yyyy年MM月dd日 hh:mm:ss EE": 2017年09月22日 9:27:41 星期五<br> */ public static final String DATE_FORMAT = "yyyy-MM-dd HH:mm:ss"; public static final String DATE_FORMAT1 = "yyyy-MM-dd"; public static final String DATE_FORMAT2="yyyyMMddHHmmss"; public static final String DATE_FORMAT3= "yyMMddHHmmss"; public static final String DATE_FORMAT4 = "yyyy-MM-dd 00:00:00"; /** * 时间戳转换成日期格式字符串 * * @param seconds 精确到秒的字符串 * @param format 指定格式 * @return String */ public static String timeStamp2Datestr(String seconds, String format) { if (seconds == null || seconds.isEmpty() || seconds.equals("null")) { return ""; } if (format == null || format.isEmpty()) { format = DATE_FORMAT; } SimpleDateFormat sdf = new SimpleDateFormat(format); return sdf.format(new Date(Long.valueOf(seconds + "000"))); } /** * 日期格式字符串转换成时间戳 * * @param date_str 字符串日期 * @param format format * @return String */ public static String datestr2TimeStamp(String date_str, String format) { if (format == null || format.isEmpty()) { format = DATE_FORMAT; } try { SimpleDateFormat sdf = new SimpleDateFormat(format); return String.valueOf(sdf.parse(date_str).getTime() / 1000); } catch (Exception e) { e.printStackTrace(); } return ""; } /** * date 转换成时间戳字符串 * * @param date date * @return java.lang.String */ public static String date2TimeStamp(Date date) { if (date == null) { date = new Date(); } try { return String.valueOf(date.getTime()); } catch (Exception e) { e.printStackTrace(); } return ""; } /** * 取得当前时间戳(精确到秒) * * @return String */ public static String timeStamp() { long time = System.currentTimeMillis(); return String.valueOf(time / 1000); } /** * date转换成string * * @param date date * @param format formatStr * @return String */ public static String date2String(Date date, String format) { if (date == null) { return null; } if (format == null || format.isEmpty()) { format = DATE_FORMAT; } try { SimpleDateFormat sdf = new SimpleDateFormat(format); return sdf.format(date); } catch (Exception e) { e.printStackTrace(); } return null; } /** * 时间戳转成Date * * @param timeStamp 时间戳字符串 * @return Date */ public static Date timeStamp2Date(String timeStamp) { if (timeStamp == null || timeStamp.isEmpty()) { return null; } try { if (timeStamp.length() == 10) { return new Date(Long.valueOf(timeStamp + "000")); } if (timeStamp.length() == 13) { return new Date(Long.valueOf(timeStamp)); } } catch (Exception e) { e.printStackTrace(); } return null; } /** * 时间字符串转换成Date * * @param dateString date字符串 * @param format 转换格式字符串 * @return Date */ public static Date string2Date(String dateString, String format) { if (StringUtil.isNull(dateString)) { return null; } if (StringUtil.isNull(format)) { format = DATE_FORMAT; } try { SimpleDateFormat sdf = new SimpleDateFormat(format); return sdf.parse(dateString); } catch (Exception e) { e.printStackTrace(); } return null; } /** * 返回当前时间精确到秒的时间戳 * * @return Long */ public static Long getSecondTimestamp() { return getSecondTimestamp(null); } /** * 获取精确到秒的时间戳,默认返回当前时间 * * @return Long */ public static Long getSecondTimestamp(Date date) { if (null == date) { date = new Date(); } String timestamp = String.valueOf(date.getTime()); int length = timestamp.length(); if (length > 3) { return Long.valueOf(timestamp.substring(0, length - 3)); } else { return 0L; } } /** * 返回传入时间与当前时间间隔秒数 * * @param date date * @return long */ public static long getTimeDelta(Date date) { return getTimeDelta(new Date(), date); } /** * 返回指定时间间隔秒数 * * @param date1 date1 * @param date2 date2 * @return long */ public static long getTimeDelta(Date date1, Date date2) { if (date1 == null) { throw new NullPointerException(); } if (date2 == null) { return 0L; } return Math.abs(date1.getTime() - date2.getTime()) / 1000; } public static double getTimeDeltaByHour(Date date) { if (date == null) { throw new NullPointerException("date required not null"); } return Math.abs(System.currentTimeMillis() - date.getTime()) / (1000 * 3600); } /** * 获取当前日期实在周的星期一和星期日的日期 * @param args */ public static List<String > getTimeInterval() { Calendar cal = Calendar.getInstance(); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd "); // 设置一个星期的第一天,按中国的习惯一个星期的第一天是星期一 cal.setFirstDayOfWeek(Calendar.MONDAY); // 获得当前日期是一个星期的第几天 int day = cal.get(Calendar.DAY_OF_WEEK); // 根据日历的规则,给当前日期减去星期几与一个星期第一天的差值 cal.add(Calendar.DATE, cal.getFirstDayOfWeek() - day); //星期一 String imptimeBegin = sdf.format(cal.getTime()); cal.add(Calendar.DATE, 6); //星期日 String imptimeEnd = sdf.format(cal.getTime()); List<String> list = new ArrayList<String>(); list.add(imptimeBegin); list.add(imptimeEnd); return list; } /* * 计算某一天所在周的星期一和星期天的日期 */ public static String[] convertWeekByDate(String s) throws Exception { String result[] = new String[2]; SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); // 设置时间格式 Date time = sdf.parse(s); Calendar cal = Calendar.getInstance(); cal.setTime(time); // 判断要计算的日期是否是周日,如果是则减一天计算周六的,否则会出问题,计算到下一周去了 int dayWeek = cal.get(Calendar.DAY_OF_WEEK);// 获得当前日期是一个星期的第几天 if (1 == dayWeek) { cal.add(Calendar.DAY_OF_MONTH, -1); } cal.setFirstDayOfWeek(Calendar.MONDAY);// 设置一个星期的第一天,按中国的习惯一个星期的第一天是星期一 int day = cal.get(Calendar.DAY_OF_WEEK);// 获得当前日期是一个星期的第几天 cal.add(Calendar.DATE, cal.getFirstDayOfWeek() - day);// 根据日历的规则,给当前日期减去星期几与一个星期第一天的差值 String imptimeBegin = sdf.format(cal.getTime()); //所在周的星期一 result[0] = imptimeBegin; cal.add(Calendar.DATE, 6); String imptimeEnd = sdf.format(cal.getTime()); //所在周的星期日 result[1] = imptimeEnd; return result; } public static void main(String[] args) { System.out.println(DateUtil.getSecondTimestamp()); System.out.println(DateUtil.getTimeDelta(new Date())); } }
二 、JaxbUtil Java 对象和 xml 互转工具类
package com.devframe.common.util; import java.io.StringReader; import java.io.StringWriter; import javax.xml.bind.JAXBContext; import javax.xml.bind.Marshaller; import javax.xml.bind.Unmarshaller; /** * @ClassName: * @Description: * @author DuanZhaoXu * @date 2018年8月23日上午8:58:52 */ public class JaxbXmlUtil { /** * JavaBean转换成xml * * 默认编码UTF-8 * * @param obj * @return */ public static String convertToXml(Object obj) { return convertToXml(obj, "UTF-8"); } /** * JavaBean转换成xml * @param obj * @param encoding * @return */ public static String convertToXml(Object obj, String encoding) { String result = null; try { JAXBContext context = JAXBContext.newInstance(obj.getClass()); Marshaller marshaller = context.createMarshaller(); marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true); marshaller.setProperty(Marshaller.JAXB_ENCODING, encoding); StringWriter writer = new StringWriter(); marshaller.marshal(obj, writer); result = writer.toString(); } catch (Exception e) { e.printStackTrace(); } return result; } /** * xml转换成JavaBean * @param xml * @param c * @return */ @SuppressWarnings("unchecked") public static <T> T converyToJavaBean(String xml, Class<T> c) { T t = null; try { JAXBContext context = JAXBContext.newInstance(c); Unmarshaller unmarshaller = context.createUnmarshaller(); t = (T) unmarshaller.unmarshal(new StringReader(xml)); } catch (Exception e) { e.printStackTrace(); } return t; } }
三 、MapRemoveNullUtil 移除map中空key或者value空值 的工具类
package com.devframe.common.util; import java.util.ArrayList; import java.util.Collection; import java.util.HashMap; import java.util.Iterator; import java.util.Map; import java.util.Set; public class MapRemoveNullUtil { /** * 移除map中空key或者value空值 * * @param map */ public static void removeNullEntry(Map map) { removeNullKey(map); removeNullValue(map); } /** * 移除map的空key * * @param map * @return */ public static void removeNullKey(Map map) { Set set = map.keySet(); for (Iterator iterator = set.iterator(); iterator.hasNext();) { Object obj = (Object) iterator.next(); remove(obj, iterator); } } /** * 移除map中的value空值 * * @param map * @return */ public static void removeNullValue(Map map) { Set set = map.keySet(); for (Iterator iterator = set.iterator(); iterator.hasNext();) { Object obj = (Object) iterator.next(); Object value = (Object) map.get(obj); remove(value, iterator); } } /** * Iterator 是工作在一个独立的线程中,并且拥有一个 mutex 锁。 Iterator * 被创建之后会建立一个指向原来对象的单链索引表,当原来的对象数量发生变化时,这个索引表的内容不会同步改变, * 所以当索引指针往后移动的时候就找不到要迭代的对象,所以按照 fail-fast 原则 Iterator 会马上抛出 * java.util.ConcurrentModificationException 异常。 所以 Iterator * 在工作的时候是不允许被迭代的对象被改变的。 但你可以使用 Iterator 本身的方法 remove() 来删除对象, * Iterator.remove() 方法会在删除当前迭代对象的同时维护索引的一致性。 * * @param obj * @param iterator */ private static void remove(Object obj, Iterator iterator) { if (obj instanceof String) { String str = (String) obj; if (StringUtil.isNull(str)) { iterator.remove(); } } else if (obj instanceof Collection) { Collection col = (Collection) obj; if (col == null || col.isEmpty()) { iterator.remove(); } } else if (obj instanceof Map) { Map temp = (Map) obj; if (temp == null || temp.isEmpty()) { iterator.remove(); } } else if (obj instanceof Object[]) { Object[] array = (Object[]) obj; if (array == null || array.length <= 0) { iterator.remove(); } } else { if (obj == null) { iterator.remove(); } } } public static void main(String[] args) { Map map = new HashMap(); map.put(1, "第一个值是数字"); map.put("2", "第2个值是字符串"); map.put(new String[] { "1", "2" }, "第3个值是数组"); map.put(new ArrayList(), "第4个值是List"); map.put(new HashMap(), "Map 无值"); map.put("5", "第5个"); map.put("6", null); map.put("asd", "asdasd"); map.put("7", ""); map.put("8", " "); System.out.println(map); MapRemoveNullUtil.removeNullKey(map); System.out.println(); System.out.println(map); MapRemoveNullUtil.removeNullValue(map); System.out.println(); System.out.println(map); } }
四、MD5Util md5 加密工具类
package com.devframe.common.util; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; /** * @ClassName: MD5Util * @Description: MD5加密工具类 * @author DuanZhaoXu * @date 2018年3月13日 上午9::15:25 * */ public class MD5Util { private MD5Util() { } public static String getEncryption(String originString) { String result = ""; try { if (originString != null) { try { // 指定加密的方式为MD5 MessageDigest md = MessageDigest.getInstance("MD5"); // 进行加密运算 byte bytes[] = md.digest(originString.getBytes("ISO8859-1")); for (int i = 0; i < bytes.length; i++) { // 将整数转换成十六进制形式的字符串 这里与0xff进行与运算的原因是保证转换结果为32位 String str = Integer.toHexString(bytes[i] & 0xFF); if (str.length() == 1) { str += "F"; } result += str; } } catch (NoSuchAlgorithmException e) { e.printStackTrace(); } } } catch (Exception e) { Log.error(e); } return result; } public static void main(String[] args) { String aa = MD5Util.getEncryption("12345"); System.out.println(aa); } }
五 、Properties 工具类
package com.devframe.common.util; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStreamReader; import java.net.URL; import java.util.Properties; public class PropertyUtil { private static final Properties PROP = new Properties(); /** * 设置配置文件的路径 */ private static final String PATH = "/config.properties"; /** * 读取配置文件的内容(key,value) * * @param key key * @return key对应的value */ public static String get(String key) { if (PROP.isEmpty()) { FileInputStream in = null; InputStreamReader reader = null; try { URL url = PropertyUtil.class.getResource(PATH); in = new FileInputStream(url.getPath()); reader = new InputStreamReader(in, "utf-8"); PROP.load(reader); } catch (IOException e) { Log.error(e); } finally { if (reader != null) { try { reader.close(); in.close(); } catch (IOException e) { Log.error(e); } } } } return PROP.getProperty(key); } }
六 、WinRarUtil 调用WinRAR.exe 解压rar文件工具类
package com.devframe.common.util; import java.io.File; /** * 调用WinRAR.exe 解压rar文件 * @ClassName: WinRarUtil * @Description: WinRarUtil * @author DuanZhaoXu * @date 2018年9月15日下午7:21:19 */ public class WinRarUtil { //服务器需要安装winrar public static final String winrarPath = "C://Program Files//WinRAR//WinRAR.exe"; public static boolean unrar(String rarFile, String target) { boolean bool = false; File f=new File(rarFile); if(!f.exists()){ return false; } String cmd = winrarPath + " X " + f.getPath() + " "+target; try { Process proc = Runtime.getRuntime().exec(cmd); if (proc.waitFor() != 0) { if (proc.exitValue() == 0) { bool = false; } } else { bool = true; } } catch (Exception e) { e.printStackTrace(); } return bool; } public static void main(String[] args) { WinRarUtil.unrar("C:\\resultdata\\save\\devallinone.rar","C:\\resultdata\\save"); } }
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)