码迷,mamicode.com
首页 > 其他好文 > 详细

常用工具类

时间:2016-04-29 15:21:51      阅读:229      评论:0      收藏:0      [点我收藏+]

标签:

<pre name="code" class="html">public class Tools {
	private static final String regex = "[a-zA-Z0-9][a-zA-Z0-9_\\.\\-]*[a-zA-Z0-9]@([a-zA-Z0-9_\\-]+[\\.]){1,}[a-zA-Z0-9_\\-]+";
	public static final String FORMAT = "yyyy-MM-dd HH:mm:ss";
	private static final String mobileRegExp = "^[1][0-9]{10}$";

	/**
	 * 获取随机数
	 * 
	 * @return int
	 */
	public static int getRandom() {
		return (int) (Math.random() * 98) + 1;
	}

	/**
	 * 随机6位数字
	 * 
	 * @return
	 */
	public static String getRandomString() {
		Random random = new Random();
		String str = "";
		for (int i = 0; i < 6; i++) {
			str = str + random.nextInt(10);
		}
		return str;
	}

	/**
	 * 睡眠时间
	 * 
	 * @param i
	 *            int 秒为单位
	 */
	public static void sleep(int i) {
		try {
			TimeUnit.SECONDS.sleep(i);
		} catch (InterruptedException e) {
		}
	}

	/**
	 * 是不是Email
	 * 
	 * @param input
	 *            需要验证的字符串
	 * @return 是 true; 否 false
	 */
	public static boolean isEmail(String input) {
		if (null != input) {
			return Pattern.matches(regex, input);
		} else {
			return false;
		}
	}

	/**
	 * 获取工程的WebRoot路径
	 * 
	 * @param request
	 * @return String 例如:F:\project\WebRoot
	 * 
	 *         public static String getWebRoot(HttpServletRequest request) {
	 *         return request.getSession().getServletContext().getRealPath("");
	 *         }
	 */

	/**
	 * 获取工程的WebRoot路径
	 * 
	 * @param request
	 * @return String 例如:F:\project\WebRoot
	 */
	public static String getWebRoot() {
		String root = System.getProperty("web.root");
		if (root.endsWith("\\")) {
			root = root.substring(0, root.length() - 1);
		}
		return root;
	}
	
	public static String getMavenWebRoot(){
		String root = Tools.class.getClassLoader().getResource("/").getPath().replace("/target/classes", "/src/main/webapp");
		root = root.substring(1);
		return root;
		
	}

	/**
	 * 判断是为空或空字符串
	 * 
	 * @param value
	 * @return
	 */
	public static boolean isEmpty(String value) {
		return (value == null) || (value.trim().equals(""));
	}

	/**
	 * 获取classes目录路径 如:F:/email3/WebRoot/WEB-INF/classes/
	 * 
	 * @return
	 */
	public static String getClassPath() {
		String classPath = Tools.class.getResource("/").getPath().substring(1);
		if (classPath.startsWith("/")) {
			classPath = classPath.substring(1);
		}
		return classPath;
	}

	/**
	 * 获取classes目录下相对路径的文件流 如:/config/email-config.xml
	 * 
	 * @return
	 */
	public static InputStream getClassPathFile(String relativePath) {
		InputStream in = Tools.class.getClass().getResourceAsStream(relativePath);
		return in;
	}

	public static String getFormatDate(Date date, String format) {
		return new SimpleDateFormat(format).format(date);
	}

	public static String getSimpleDate(Date date) {
		return getFormatDate(date, FORMAT);
	}

	public static String getDefaultDate() {
		return getSimpleDate(new Date());
	}

	/**
	 * 获取指点的当前格式化时间
	 * 
	 * @param format
	 *            例如(yyyy-MM-dd HH:mm:ss)
	 * @return String
	 */
	public static String getCurrentDateFormat(String format) {
		SimpleDateFormat sf = new SimpleDateFormat(format);
		return sf.format(new Date());
	}

	/**
	 * 获取uuid
	 * 
	 * @return
	 */
	public static String getUUID() {
		return UUID.randomUUID().toString().replace("-", "");
	}

	/**
	 * 获取工程的WebRoot路径
	 * 
	 * @param request
	 * @return String 例如:D:\soft_path\Tomcat6.0.29\webapps\microblog	 */
	public static String getRootPath(HttpServletRequest request) {
		return request.getSession().getServletContext().getRealPath("/");
	}

	public static String toTrim(String value) {
		if (isEmpty(value)) {
			return "";
		}
		return value.trim();
	}

	public static int toInt(String s, int i) {
		if (Validate.isNumber(s)) {
			return Integer.parseInt(s);
		}
		return i;
	}
	
	public static double toDouble(String s, double i) {
		if (Validate.isNumber(s) || Validate.isFloat(s)) {
			return Double.parseDouble(s);
		}
		return i;
	}

	/**
	 * MD5加密
	 * 
	 * @param s
	 * @return
	 */
	public final static String MD5(String s) {
		char hexDigits[] = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F' };
		try {
			byte[] btInput = s.getBytes();
			// 获得MD5摘要算法的 MessageDigest 对象
			MessageDigest mdInst = MessageDigest.getInstance("MD5");
			// 使用指定的字节更新摘要
			mdInst.update(btInput);
			// 获得密文
			byte[] md = mdInst.digest();
			// 把密文转换成十六进制的字符串形式
			int j = md.length;
			char str[] = new char[j * 2];
			int k = 0;
			for (int i = 0; i < j; i++) {
				byte byte0 = md[i];
				str[k++] = hexDigits[byte0 >>> 4 & 0xf];
				str[k++] = hexDigits[byte0 & 0xf];
			}
			return new String(str);
		} catch (Exception e) {
			e.printStackTrace();
			return null;
		}
	}

	/**
	 * 过滤html文件
	 * 
	 * @param word
	 * @return
	 */
	public static String filterHTML(String word) {
		if (null == word) {
			return "";
		} else {
			//
			return word.trim().replace("&", "&").replace("<", "<").replace(">", ">");
		}
	}

	/**
	 * 过滤所有html的标签
	 * 
	 * @param html
	 * @return
	 */
	public static String removeHtml(String html) {
		if (html == null) {
			return "";
		} else {
			char[] words = html.toCharArray();
			StringBuffer sbf = new StringBuffer();
			int i = 0;
			boolean flag = true;
			while (i < words.length) {
				if (flag && words[i] == '<') {
					flag = false;
				} else if (!flag && words[i] == '>') {
					flag = true;
				} else if (flag) {
					sbf.append(words[i]);
				}
				i++;
			}
			return sbf.toString();
		}
	}

	/**
	 * 获取请求的url完整地址
	 * 
	 * @param request
	 * @return
	 */
	public static String getRequestURL(HttpServletRequest request) {
		String queryString = request.getQueryString();
		queryString = queryString == null ? "" : queryString.trim();
		try {
			queryString = URLEncoder.encode(queryString, "utf-8");
		} catch (UnsupportedEncodingException e) {
			e.printStackTrace();
		}
		queryString = "".equals(queryString) ? "" : "?" + queryString;
		return request.getRequestURL() + queryString;
	}

	public static String toUTF8(String str) {
		if (null == str || "".equals(str)) {
			return "";
		}
		try {
			str = URLEncoder.encode(str, "utf-8");
			return str;
		} catch (UnsupportedEncodingException e) {
			e.printStackTrace();
		}
		return "";
	}

	/**
	 * 
	 * @param array
	 *            字符数组
	 * @param regex
	 *            分隔符
	 * @return
	 */
	public static String arrayToString(String[] array, String regex) {
		String returnString = "";
		if (array == null || array.length <= 0) {
			return returnString;
		}
		for (int index = 0; index < array.length; index++) {
			String s = array[index];
			if (s == null) {
				s = "";
			}
			if (index != array.length - 1)
				returnString += s + regex;
			else
				returnString += s;
		}
		return returnString;
	}

	/**
	 * 根据传入字符串获得日期
	 * 
	 * @param dateStr
	 * @param format
	 * @return
	 */
	public static Date getDate(String dateStr, String format) {
		SimpleDateFormat sf = new SimpleDateFormat(format);
		Date date = null;
		try {
			date = sf.parse(dateStr);
		} catch (ParseException e) {
			e.printStackTrace();
		}
		return date;
	}

	/**
	 * 获得日期相减总月数
	 * 
	 * @param after
	 * @param before
	 * @param format
	 * @return
	 */
	public static int getMinusMonth(Date after, String before, String format) {
		SimpleDateFormat sf = new SimpleDateFormat(format);
		try {
			return getMinusMonth(after, sf.parse(before));
		} catch (ParseException e) {
			e.printStackTrace();
		}
		return 0;

	}

	/**
	 * 获得日期相减总月数
	 * 
	 * @param after
	 * @param before
	 * @param format
	 * @return
	 */
	public static int getMinusMonth(String after, String before, String format) {
		SimpleDateFormat sf = new SimpleDateFormat(format);
		try {
			return getMinusMonth(sf.parse(after), sf.parse(before));
		} catch (ParseException e) {
			e.printStackTrace();
		}
		return 0;

	}

	/**
	 * 获得日期相减总月数
	 * 
	 * @param after
	 * @param before
	 * @return
	 */
	public static int getMinusMonth(Date after, Date before) {
		Calendar calAfter = Calendar.getInstance();
		calAfter.setTime(after);
		Calendar calBefore = Calendar.getInstance();
		calBefore.setTime(before);
		int minus = (calAfter.get(Calendar.YEAR) - calBefore.get(Calendar.YEAR)) * 12 + (calAfter.get(Calendar.MONTH) - calBefore.get(Calendar.MONTH));
		return minus;
	}

	/**
	 * 当前时间 + 多少个月
	 * 
	 * @param date
	 * @param AddMonth
	 * @return
	 */
	public static Date dateAddMonth(Date date, int AddMonth) {
		Calendar c = Calendar.getInstance();
		c.setTime(date);
		c.add(Calendar.MONTH, AddMonth);
		return c.getTime();

	}

	/**
	 * 全角空格为12288,半角空格为32 其他字符半角(33-126)与全角(65281-65374)的对应关系是:均相差65248
	 * 
	 * 将字符串中的全角字符转为半角
	 * 
	 * @param src
	 *            要转换的包含全角的任意字符串
	 * @return 转换之后的字符串
	 */
	public static String toSemiangle(String src) {
		char[] c = src.toCharArray();
		for (int index = 0; index < c.length; index++) {
			if (c[index] == 12288) {// 全角空格
				c[index] = (char) 32;
			} else if (c[index] > 65280 && c[index] < 65375) {// 其他全角字符
				c[index] = (char) (c[index] - 65248);
			}
		}
		return String.valueOf(c);
	}

	/***
	 * 获取时间间隔天数
	 * 
	 * @param beginDate
	 *            :开始时间
	 * @param endDate
	 *            :结束时间
	 * @return
	 * @throws ParseException
	 */
	public static int getDaysBetween(String beginDate, String endDate) throws ParseException {
		SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
		Date bDate = format.parse(beginDate);
		Date eDate = null;
		if (endDate != null) {
			eDate = format.parse(endDate);
		} else {
			String currentDay = format.format(new Date());
			eDate = format.parse(currentDay);
		}
		Calendar d1 = new GregorianCalendar();
		d1.setTime(bDate);
		Calendar d2 = new GregorianCalendar();
		d2.setTime(eDate);
		int days = d2.get(Calendar.DAY_OF_YEAR) - d1.get(Calendar.DAY_OF_YEAR);
		int y2 = d2.get(Calendar.YEAR);
		if (d1.get(Calendar.YEAR) != y2) {
			d1 = (Calendar) d1.clone();
			do {
				days += d1.getActualMaximum(Calendar.DAY_OF_YEAR);// 得到当年的实际天数
				d1.add(Calendar.YEAR, 1);
			} while (d1.get(Calendar.YEAR) != y2);
		}
		return days;
	}

	/***
	 * 获取几天前
	 * 
	 * @param datediff
	 *            :相隔的天数
	 * @param format
	 *            :返回的时间格式,默认为yyyy-MM-dd
	 * @return
	 */
	public static String getDateBefore(int datediff, String format) {
		if (StrUtils.isNull(format)) {
			format = "yyyy-MM-dd";
		}
		Calendar c = Calendar.getInstance();
		c.add(Calendar.DATE, -datediff);
		Date day = c.getTime();
		SimpleDateFormat sdf = new SimpleDateFormat(format);
		String date = sdf.format(day);
		return date;
	}

	/***
	 * 获取指定日期的几天前的日期
	 * 
	 * @param datediff
	 *            :相隔的天数
	 * @param endTime
	 *            :指定日期
	 * @param format
	 *            :返回的时间格式,默认为yyyy-MM-dd
	 * @return
	 */
	public static String getDateBefore(int datediff, String endTime, String format) {
		if (StrUtils.isNull(format)) {
			format = "yyyy-MM-dd";
		}
		Calendar c = Calendar.getInstance();
		if (!StrUtils.isNull(endTime)) {
			c.setTime(getDate(endTime, format));
		}
		c.add(Calendar.DATE, -datediff);
		Date day = c.getTime();
		SimpleDateFormat sdf = new SimpleDateFormat(format);
		String date = sdf.format(day);
		return date;
	}

	/***
	 * 获取连个日期时间的月份
	 * 
	 * @param beginTime
	 *            :起始时间
	 * @param endTime
	 *            :结束时间
	 * @param format
	 *            :返回的时间格式 默认为yyyy-mm
	 * @return
	 */
	public static List<String> getMonthBetween(String beginTime, String endTime, String format) {
		ArrayList<String> result = null;
		try {
			result = new ArrayList<String>();
			if (StrUtils.isNull(format)) {
				format = "yyyy-MM";
			}
			SimpleDateFormat sdf = new SimpleDateFormat(format);// 格式化为年月
			Calendar min = Calendar.getInstance();
			Calendar max = Calendar.getInstance();

			min.setTime(sdf.parse(beginTime));
			min.set(min.get(Calendar.YEAR), min.get(Calendar.MONTH), 1);

			max.setTime(sdf.parse(endTime));
			max.set(max.get(Calendar.YEAR), max.get(Calendar.MONTH), 2);

			Calendar curr = min;
			while (curr.before(max)) {
				result.add(sdf.format(curr.getTime()));
				curr.add(Calendar.MONTH, 1);
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
		return result;
	}

	/***
	 * 获取连个日期时间的年份
	 * 
	 * @param beginTime
	 *            :起始时间
	 * @param endTime
	 *            :结束时间
	 * @param format
	 *            :返回的时间格式 默认为yyyy
	 * @return
	 */
	public static List<String> getYearBetween(String beginTime, String endTime, String format) {
		ArrayList<String> result = null;
		try {
			result = new ArrayList<String>();
			if (StrUtils.isNull(format)) {
				format = "yyyy";
			}
			SimpleDateFormat sdf = new SimpleDateFormat(format);// 格式化为年月
			Calendar min = Calendar.getInstance();
			Calendar max = Calendar.getInstance();

			min.setTime(sdf.parse(beginTime));
			min.set(min.get(Calendar.YEAR), min.get(Calendar.MONTH), 1);

			max.setTime(sdf.parse(endTime));
			max.set(max.get(Calendar.YEAR), max.get(Calendar.MONTH), 2);

			Calendar curr = min;
			while (curr.before(max)) {
				result.add(sdf.format(curr.getTime()));
				curr.add(Calendar.YEAR, 1);
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
		return result;
	}

	/**
	 * 文件类型判断
	 * 
	 * @param fileName
	 * @return
	 */
	public static boolean checkFileType(String fileName, String[] allowFiles) {
		for (String ext : allowFiles) {
			if (fileName.toLowerCase().endsWith(ext)) {
				return true;
			}
		}
		return false;
	}

	/**
	 * 是不是手机号码
	 * 
	 * @param input
	 *            : 需要验证的字符串
	 * @return 是 true; 否 false
	 */
	public static boolean isMobile(String input) {
		if (null != input) {
			return Pattern.matches(mobileRegExp, input);
		} else {
			return false;
		}
	}

	/**
	 * 创建文件夹 不存在创建,存在则忽略
	 * 
	 * @param path
	 */
	public static void mkdirs(String path) {
		File file = new File(path);
		if (!file.exists()) {
			file.mkdirs();
		}
	}
	
	/***
	 * 判断指定的日期是否在当前时间之前
	 * @param time
	 * @return
	 */
	public static boolean isBeforeToday (long time) {
		long current = new Date().getTime();
		if ((current - time) > 0) {
			return true;
		}
		return false;
	}
	
	/***
	 * 获取当前年份
	 * @return
	 */
	public static int getCurrentYear () {
		Calendar cal = Calendar.getInstance();
		return cal.get(Calendar.YEAR);
	}
	
	/***
	 * 获取当前月份
	 * @return
	 */
	public static int getCurrentMonth () {
		Calendar cal = Calendar.getInstance();
		return cal.get(Calendar.MONTH) + 1;
	}
	
	/**
	 * 递归删除空文件
	 * @param path
	 */
	public static void delEmptyPath(String path) {
		File file = new File(path);
		if (file.exists() && file.isDirectory()) {
			File[] files = file.listFiles();
			if (files != null && files.length > 0)
				return;
			if (file.delete()) {
				delEmptyPath(file.getParent());
			}
		}
	}
}






常用工具类

标签:

原文地址:http://blog.csdn.net/u012965203/article/details/51272641

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!