zoukankan      html  css  js  c++  java
  • Java高效编程之常用函数

    (1)时间函数库

    package com.sun.util;
    import java.text.ParseException;
    import java.text.ParsePosition;
    import java.text.SimpleDateFormat;
    import java.util.Calendar;
    import java.util.Date;
    
    public class sunDateUtils {
        /** 
         * @author:孙思源
         * @date: 2015年12月15日 上午9:22:47 
         * @description:获取现在时间
         * @parameter:  
        **/
        public static Date getNow() {
           Date currentTime = new Date();
           return currentTime;
        }
    
        /** 
         * @author:孙思源 
         * @date: 2015年12月15日 上午9:22:47 
         * @description: 获取现在日期时间
         * @parameter:  
         * @return:  返回字符串格式 yyyy-MM-dd HH:mm:ss
        **/
        public static String getNowDateTimeStr() {
            Date currentTime = new Date();
            SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
            String dateTimeString = formatter.format(currentTime);
            return dateTimeString;
        }
    
        /** 
         * @author:孙思源 
         * @date: 2015年12月15日 上午9:22:47 
         * @description: 获取现在时间 日期
         * @parameter:  
         * @return:  返回字符串格式yyyyMMdd HHmmss
        **/
        public static String getNowDateTimeStrFormatTwo() {
           Date currentTime = new Date();
           SimpleDateFormat formatter = new SimpleDateFormat("yyyyMMdd HHmmss");
           String dateString = formatter.format(currentTime);
           return dateString;
        }
    
        /** 
         * @author:孙思源 
         * @date: 2015年12月15日 上午9:22:47 
         * @description: 获取现在时间 日期
         * @parameter:  
         * @return:  返回字符串格式 yyyy-MM-dd
        **/
        public static String getNowDateStr() {        
            Date currentTime = new Date();
            SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
            String dateString = formatter.format(currentTime);
            return dateString;
        }
    
        /** 
         * @author:孙思源 
         * @date: 2015年12月15日 上午9:22:47 
         * @description: 获取现在时间
         * @parameter:  
         * @return:  返回字符串格式 HH:mm:ss
        **/
        public static String getTimeStr() {
            SimpleDateFormat formatter = new SimpleDateFormat("HH:mm:ss");
            Date currentTime = new Date();
            String timeString = formatter.format(currentTime);
            return timeString;
        }
    
        /** 
         * @author:孙思源 
         * @date: 2015年12月15日 上午9:22:47 
         * @description:日期时间字符串转日期时间格式
         * @parameter:  
         * @return:  返回日期时间格式
        **/
        public static Date strToDateTime(String strDateTime) {
            SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
            ParsePosition pos = new ParsePosition(0);
            Date strtodate = formatter.parse(strDateTime, pos);
            return strtodate;
        }
    
        /** 
         * @author:孙思源 
         * @date: 2015年12月15日 上午9:22:47 
         * @description:日期字符串转日期格式
         * @parameter:  
         * @return:  返回日期格式
        **/
        public static Date strToDate(String strDate) {
            SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
            ParsePosition pos = new ParsePosition(0);
            Date strtodate = formatter.parse(strDate, pos);
            return strtodate;
        }
    
        /** 
         * @author:孙思源 
         * @date: 2015年12月15日 上午9:22:47 
         * @description:两个日期时间是否在跨度之内 
         * @parameter:  gapType 跨度类型,如Calendar.YEAR,Calendar.MONTH,Calendar.DAY_OF_YEAR 
         * @parameter:  maxGap  最大跨度值 
         * @return:  返回日期格式
        **/
        public static boolean isWithInDateGap(String startDate, String endDate,  
                int gapType, int maxGap){  
            Date startDateTime = null;  
            Date endDateTime = null;  
            startDateTime = strToDateTime(startDate);  
            endDateTime = strToDateTime(endDate);  
            return isWithInDateGap(startDateTime,endDateTime, gapType, maxGap);  
        }
    
        public static boolean isWithInDateGap(Date startDate, Date endDate,  
                    int gapType, int maxGap) {  
            if (startDate == null) {  
                throw new IllegalArgumentException("The startDate must not be null");  
            }  
            if (endDate == null) {  
                throw new IllegalArgumentException("The endDate must not be null");  
            }  
            if (gapType != Calendar.YEAR && gapType != Calendar.MONTH  
                    && gapType != Calendar.DAY_OF_YEAR) {  
                throw new IllegalArgumentException(  
                        "The value of gapType is invalid");  
            }  
    
            Calendar start = Calendar.getInstance();  
            start.setTime(startDate);  
            start.add(gapType, maxGap);  
            int compare = start.getTime().compareTo(endDate);  
            return compare >= 0;  
        }  
    
        public static void main(String[] args){
            System.out.println(getNow());
            System.out.println(getNowDateTimeStr());
            System.out.println(getNowDateTimeStrFormatTwo());
            System.out.println(getNowDateStr());
            System.out.println(getTimeStr());
            System.out.println(strToDateTime(getNowDateTimeStr()));
            System.out.println(strToDate(getNowDateStr()));
            System.out.println(isWithInDateGap(getNowDateTimeStr(),getNowDateTimeStr()
            ,Calendar.YEAR,1));
        }
    }
    

    (2)文件处理函数库

    package com.sun.util;
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileNotFoundException;
    import java.io.IOException;
    import java.io.InputStream;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    public class sunFileUtils {
        /**
         * 下载文件
         * @throws FileNotFoundException 
         */
        public static void downFile(HttpServletRequest request, 
            HttpServletResponse response,String fileName) throws FileNotFoundException{
            String filePath = request.getSession().getServletContext().getRealPath("/") 
                              + "template/" +  fileName;  //需要下载的文件路径
            // 读到流中
            InputStream inStream = new FileInputStream(filePath);// 文件的存放路径
            // 设置输出的格式
            response.reset();
            response.setContentType("bin");
            response.addHeader("Content-Disposition", "attachment; filename="" + fileName + """);
            // 循环取出流中的数据
            byte[] b = new byte[100];
            int len;
            try {
                while ((len = inStream.read(b)) > 0)
                response.getOutputStream().write(b, 0, len);
                inStream.close();
            } catch (IOException e) {
              e.printStackTrace();
            }
        }
    
        /** 
         * @author:孙思源 
         * @date: 2015年12月15日 上午10:12:21 
         * @description: 创建文件目录,若路径存在,就不生成 
         * @parameter:  
         * @return:  
        **/
        public static void createDocDir(String dirName) {  
            File file = new File(dirName);  
            if (!file.exists()) {  
                file.mkdirs();  
            }  
        }  
    
        /** 
         * @author:孙思源 
         * @date: 2015年12月15日 上午10:12:21 
         * @description: 本地,在指定路径生成文件。若文件存在,则删除后重建。
         * @parameter:  
         * @return:  
        **/
        public static void isExistsMkDir(String dirName){  
            File file = new File(dirName);  
            if (!file.exists()) {  
                file.mkdirs();  
            }  
        } 
    
        /** 
         * @author:孙思源 
         * @date: 2015年12月15日 上午10:15:14 
         * @description: 创建新文件,若文件存在则删除再创建,若不存在则直接创建
         * @parameter:  
         * @return:  
        **/
        public static void creatFileByName(File file){  
            try {  
                if (file.exists()) {  
                    file.delete();  
                    //发现同名文件:{},先执行删除,再新建。
                }  
                file.createNewFile();  
                //创建文件
            }  
            catch (IOException e) {  
               //创建文件失败
               throw e;
            }  
        }  
    }
    

    (3)对象的复制

    使用场景:在我们的实际开发当中,经常会遇到这样的情况,一个对象A有几十个属性,对象B包含了对象A所有的属性(属性名称是一样的),对象B还多出那么几个A没有的属性。但是希望把A对象的属性值全部都set进B里面。如果不断的set,get会显得很繁琐。下面就是对象复制的代码(依赖spring):

    package com.sun.util;
    import java.beans.PropertyDescriptor;
    import java.lang.reflect.Method;
    import java.lang.reflect.Modifier;
    import java.math.BigDecimal;
    import org.springframework.beans.BeansException;
    import org.springframework.beans.FatalBeanException;
    import org.springframework.util.Assert;
    
    public abstract class CopyObjectUtils extends org.springframework.beans.BeanUtils {
        public static void copyProperties(Object source, Object target) throws BeansException {
            Assert.notNull(source, "Source must not be null");
            Assert.notNull(target, "Target must not be null");
            Class<?> actualEditable = target.getClass();
            PropertyDescriptor[] targetPds = getPropertyDescriptors(actualEditable);
            for (PropertyDescriptor targetPd : targetPds) {
                if (targetPd.getWriteMethod() != null) {
                    PropertyDescriptor sourcePd = getPropertyDescriptor(source.getClass(), targetPd.getName());
                    if (sourcePd != null && sourcePd.getReadMethod() != null) {
                        try {
                            Method readMethod = sourcePd.getReadMethod();
                            if (!Modifier.isPublic(readMethod.getDeclaringClass().getModifiers())) {
                                readMethod.setAccessible(true);
                            }
                            Object srcValue = readMethod.invoke(source);
                            if(srcValue == null){
                                continue;
                            }
                            Object value=srcValue;
                            //转换Double 与 BigDecimal
                            if(sourcePd.getPropertyType().isAssignableFrom( Double.class) && targetPd.getPropertyType().isAssignableFrom(BigDecimal.class)){
                                value = new BigDecimal((Double)srcValue);
                            }
                            if(sourcePd.getPropertyType().isAssignableFrom( BigDecimal.class) && targetPd.getPropertyType().isAssignableFrom(Double.class)){
                                value = ((BigDecimal)srcValue).doubleValue();
                            }
                            //转换Long 与 BigDecimal
                            if(sourcePd.getPropertyType().isAssignableFrom( Long.class) && targetPd.getPropertyType().isAssignableFrom(BigDecimal.class)){
                                value = new BigDecimal((Long)srcValue);
                            }
                            if(sourcePd.getPropertyType().isAssignableFrom( BigDecimal.class) && targetPd.getPropertyType().isAssignableFrom(Long.class)){
                                value = ((BigDecimal)srcValue).longValue();
                            }
                            //转换String为数字的 与 BigDecimal
                            if(sourcePd.getPropertyType().isAssignableFrom( String.class) && targetPd.getPropertyType().isAssignableFrom(BigDecimal.class)){
                                String srcValueStr = (String)srcValue;
                                if(srcValueStr.matches("^(([1-9]{1}\d*)|([0]{1}))(\.(\d){2})$")){
                                    value = new BigDecimal((String)srcValue);
                                }
                            }
    
                            // 这里判断以下value是否为空 当然这里也能进行一些特殊要求的处理 例如绑定时格式转换等等
                            if (value != null) {
                                Method writeMethod = targetPd.getWriteMethod();
                                if (!Modifier.isPublic(writeMethod.getDeclaringClass().getModifiers())) {
                                    writeMethod.setAccessible(true);
                                }
                                writeMethod.invoke(target, value);
                            }
                        } catch (Throwable ex) {
                            throw new FatalBeanException("Could not copy properties from source to target", ex);
                        }
                    }
                }
            }
        }
    }
     
     
  • 相关阅读:
    Android+Jquery Mobile学习系列(9)-总结和代码分享
    Android+Jquery Mobile学习系列(8)-保单/生日提醒功能
    Android+Jquery Mobile学习系列(7)-保险人信息
    Android+Jquery Mobile学习系列(6)-个人信息设置
    jquerymobile之collapsible可折叠块标题内容动态显示
    Android+Jquery Mobile学习系列(5)-SQLite数据库
    Android+Jquery Mobile学习系列(4)-页面转场及参数传递
    Android+Jquery Mobile学习系列(3)-创建Android项目
    cmd命令 拷贝某文件夹及其子文件夹文件到其它文件夹
    精简JRE的思路初探
  • 原文地址:https://www.cnblogs.com/sunsiyuan/p/7190829.html
Copyright © 2011-2022 走看看