`

项目经验分享——Java常用工具类集合

 
阅读更多

写在前面

 

本文涉及的工具类部分是自己编写,另一部分是在项目里收集的。工具类涉及数据库连接、格式转换、文件操作、发送邮件等等。提高开发效率,欢迎收藏与转载。

 

数据库连接工具类

 

数据库连接工具类——仅仅获得连接对象 ConnDB.java

[java] view plaincopy
  1. package com.util;  
  2.   
  3. import java.sql.Connection;  
  4. import java.sql.DriverManager;  
  5.   
  6. /** 
  7.  * 数据库连接工具类——仅仅获得连接对象 
  8.  * 
  9.  */  
  10. public class ConnDB {  
  11.       
  12.     private static Connection conn = null;  
  13.       
  14.     private static final String DRIVER_NAME = "com.mysql.jdbc.Driver";  
  15.   
  16.     private static final String URL = "jdbc:mysql://localhost:3306/axt?useUnicode=true&characterEncoding=UTF-8";  
  17.   
  18.     private static final String USER_NAME = "root";  
  19.   
  20.     private static final String PASSWORD = "root";  
  21.       
  22.     public static Connection getConn(){  
  23.         try {  
  24.             Class.forName(DRIVER_NAME);  
  25.             conn = DriverManager.getConnection(URL, USER_NAME, PASSWORD);  
  26.         } catch (Exception e) {  
  27.             e.printStackTrace();  
  28.         }  
  29.         return conn;  
  30.     }  
  31. }  
[java] view plaincopy
  1. package com.util;  
  2.   
  3. import java.sql.Connection;  
  4. import java.sql.DriverManager;  
  5.   
  6. /** 
  7.  * 数据库连接工具类——仅仅获得连接对象 
  8.  * 
  9.  */  
  10. public class ConnDB {  
  11.       
  12.     private static Connection conn = null;  
  13.       
  14.     private static final String DRIVER_NAME = "com.mysql.jdbc.Driver";  
  15.   
  16.     private static final String URL = "jdbc:mysql://localhost:3306/axt?useUnicode=true&characterEncoding=UTF-8";  
  17.   
  18.     private static final String USER_NAME = "root";  
  19.   
  20.     private static final String PASSWORD = "root";  
  21.       
  22.     public static Connection getConn(){  
  23.         try {  
  24.             Class.forName(DRIVER_NAME);  
  25.             conn = DriverManager.getConnection(URL, USER_NAME, PASSWORD);  
  26.         } catch (Exception e) {  
  27.             e.printStackTrace();  
  28.         }  
  29.         return conn;  
  30.     }  
  31. }  

数据库连接工具类——包含取得连接和关闭资源 ConnUtil.java

 

[java] view plaincopy
  1. package com.util;  
  2.   
  3. import java.sql.Connection;  
  4. import java.sql.DriverManager;  
  5. import java.sql.PreparedStatement;  
  6. import java.sql.ResultSet;  
  7. import java.sql.SQLException;  
  8.   
  9.   
  10. /**  
  11.  * @className: ConnUtil.java 
  12.  * @classDescription: 数据库连接工具类——包含取得连接和关闭资源  
  13.  * @function:  
  14.  * @author: Wentasy 
  15.  * @createTime: 2012-9-24 上午11:51:15 
  16.  * @modifyTime:  
  17.  * @modifyReason:  
  18.  * @since: JDK 1.6 
  19.  */  
  20. public class ConnUtil {  
  21.     public static final String url = "jdbc:mysql://XXX.XXX.XXX.XXX:3306/dbadapter";  
  22.     public static final String user = "root";  
  23.     public static final String password = "XXXXXX";  
  24.       
  25.     /** 
  26.      * 得到连接 
  27.      * @return 
  28.      * @throws SQLException 
  29.      * @throws ClassNotFoundException 
  30.      */  
  31.     public static Connection establishConn() throws SQLException,ClassNotFoundException{  
  32.         Class.forName("com.mysql.jdbc.Driver");  
  33.         return DriverManager.getConnection(url, user, password);  
  34.     }  
  35.       
  36.     /** 
  37.      * 关闭连接 
  38.      * @param conn 
  39.      * @throws SQLException 
  40.      */  
  41.     public static void close(Connection conn) throws SQLException{  
  42.         if(conn != null){  
  43.             conn.close();  
  44.             conn = null;  
  45.         }  
  46.     }  
  47.       
  48.     /** 
  49.      * 关闭PreparedStatement 
  50.      * @param pstmt 
  51.      * @throws SQLException 
  52.      */  
  53.     public static void close(PreparedStatement pstmt) throws SQLException{  
  54.         if(pstmt != null){  
  55.             pstmt.close();  
  56.             pstmt = null;  
  57.         }  
  58.     }  
  59.       
  60.     /** 
  61.      * 关闭结果集 
  62.      * @param rs 
  63.      * @throws SQLException 
  64.      */  
  65.     public static void close(ResultSet rs) throws SQLException{  
  66.         if(rs != null){  
  67.             rs.close();  
  68.             rs = null;  
  69.         }  
  70.     }  
  71. }  
[java] view plaincopy
  1. package com.util;  
  2.   
  3. import java.sql.Connection;  
  4. import java.sql.DriverManager;  
  5. import java.sql.PreparedStatement;  
  6. import java.sql.ResultSet;  
  7. import java.sql.SQLException;  
  8.   
  9.   
  10. /**  
  11.  * @className: ConnUtil.java 
  12.  * @classDescription: 数据库连接工具类——包含取得连接和关闭资源  
  13.  * @function:  
  14.  * @author: Wentasy 
  15.  * @createTime: 2012-9-24 上午11:51:15 
  16.  * @modifyTime:  
  17.  * @modifyReason:  
  18.  * @since: JDK 1.6 
  19.  */  
  20. public class ConnUtil {  
  21.     public static final String url = "jdbc:mysql://XXX.XXX.XXX.XXX:3306/dbadapter";  
  22.     public static final String user = "root";  
  23.     public static final String password = "XXXXXX";  
  24.       
  25.     /** 
  26.      * 得到连接 
  27.      * @return 
  28.      * @throws SQLException 
  29.      * @throws ClassNotFoundException 
  30.      */  
  31.     public static Connection establishConn() throws SQLException,ClassNotFoundException{  
  32.         Class.forName("com.mysql.jdbc.Driver");  
  33.         return DriverManager.getConnection(url, user, password);  
  34.     }  
  35.       
  36.     /** 
  37.      * 关闭连接 
  38.      * @param conn 
  39.      * @throws SQLException 
  40.      */  
  41.     public static void close(Connection conn) throws SQLException{  
  42.         if(conn != null){  
  43.             conn.close();  
  44.             conn = null;  
  45.         }  
  46.     }  
  47.       
  48.     /** 
  49.      * 关闭PreparedStatement 
  50.      * @param pstmt 
  51.      * @throws SQLException 
  52.      */  
  53.     public static void close(PreparedStatement pstmt) throws SQLException{  
  54.         if(pstmt != null){  
  55.             pstmt.close();  
  56.             pstmt = null;  
  57.         }  
  58.     }  
  59.       
  60.     /** 
  61.      * 关闭结果集 
  62.      * @param rs 
  63.      * @throws SQLException 
  64.      */  
  65.     public static void close(ResultSet rs) throws SQLException{  
  66.         if(rs != null){  
  67.             rs.close();  
  68.             rs = null;  
  69.         }  
  70.     }  
  71. }  


 

格式转换工具类

 

日期转换工具类 CommUtil.java

[java] view plaincopy
  1. package com.util;  
  2.   
  3. import java.text.ParseException;  
  4. import java.text.SimpleDateFormat;  
  5. import java.util.Date;  
  6.   
  7. /** 
  8.  * 日期转换工具类 
  9.  */  
  10. public class CommUtil {  
  11.   
  12.     /** 
  13.      * 将日期格式转换成yyyy-MM-dd的字符串格式 
  14.      * 返回值如:2010-10-06 
  15.      * @param time 要转换的日期 
  16.      * @return 
  17.      */  
  18.     public static  String dateToString(Date time)  {  
  19.           
  20.         SimpleDateFormat formatter = new  SimpleDateFormat ("yyyy-MM-dd"); //定义将日期格式要换成的格式  
  21.         String stringTime  =  formatter.format(time);  
  22.       
  23.         return  stringTime;  
  24.           
  25.       }  
  26.     /** 
  27.      * 将日期格式转换成yyyyMMdd的字符串格式 
  28.      * 返回值如:2010-10-06 
  29.      * @param time 要转换的日期 
  30.      * @return 
  31.      */  
  32.     public static  String dateTimeToString(Date time)  {  
  33.           
  34.         SimpleDateFormat formatter = new  SimpleDateFormat ("yyyyMMdd"); //定义将日期格式要换成的格式  
  35.         String stringTime  =  formatter.format(time);  
  36.       
  37.         return  stringTime;  
  38.           
  39.       }  
  40.       
  41.        
  42.     /** 
  43.      * 将日期格式转换成yyyy-MM-dd的字符串格式 
  44.      * 返回值如:2010-10-06 
  45.      * @param time 要转换的日期 
  46.      * @return 
  47.      */  
  48.     public static  Date dateToDate(Date time)  {  
  49.           
  50.         SimpleDateFormat formatter = new  SimpleDateFormat ("yyyy-MM-dd"); //定义将日期格式要换成的格式  
  51.         String stringTime  =  formatter.format(time);  
  52.      Date date = null;  
  53.     try {  
  54.         date = formatter.parse(stringTime);  
  55.     } catch (ParseException e) {  
  56.         e.printStackTrace();  
  57.     }  
  58.         return  date;  
  59.           
  60.     }  
  61.       
  62.     /** 
  63.      * 得到当前时间,以字符串表示 
  64.      * @return 
  65.      */  
  66.     public static String getDate(){  
  67.         Date date = new Date();  
  68.         return CommUtil.dateToString(date);  
  69.     }  
  70. }  
[java] view plaincopy
  1. package com.util;  
  2.   
  3. import java.text.ParseException;  
  4. import java.text.SimpleDateFormat;  
  5. import java.util.Date;  
  6.   
  7. /** 
  8.  * 日期转换工具类 
  9.  */  
  10. public class CommUtil {  
  11.   
  12.     /** 
  13.      * 将日期格式转换成yyyy-MM-dd的字符串格式 
  14.      * 返回值如:2010-10-06 
  15.      * @param time 要转换的日期 
  16.      * @return 
  17.      */  
  18.     public static  String dateToString(Date time)  {  
  19.           
  20.         SimpleDateFormat formatter = new  SimpleDateFormat ("yyyy-MM-dd"); //定义将日期格式要换成的格式  
  21.         String stringTime  =  formatter.format(time);  
  22.       
  23.         return  stringTime;  
  24.           
  25.       }  
  26.     /** 
  27.      * 将日期格式转换成yyyyMMdd的字符串格式 
  28.      * 返回值如:2010-10-06 
  29.      * @param time 要转换的日期 
  30.      * @return 
  31.      */  
  32.     public static  String dateTimeToString(Date time)  {  
  33.           
  34.         SimpleDateFormat formatter = new  SimpleDateFormat ("yyyyMMdd"); //定义将日期格式要换成的格式  
  35.         String stringTime  =  formatter.format(time);  
  36.       
  37.         return  stringTime;  
  38.           
  39.       }  
  40.       
  41.        
  42.     /** 
  43.      * 将日期格式转换成yyyy-MM-dd的字符串格式 
  44.      * 返回值如:2010-10-06 
  45.      * @param time 要转换的日期 
  46.      * @return 
  47.      */  
  48.     public static  Date dateToDate(Date time)  {  
  49.           
  50.         SimpleDateFormat formatter = new  SimpleDateFormat ("yyyy-MM-dd"); //定义将日期格式要换成的格式  
  51.         String stringTime  =  formatter.format(time);  
  52.      Date date = null;  
  53.     try {  
  54.         date = formatter.parse(stringTime);  
  55.     } catch (ParseException e) {  
  56.         e.printStackTrace();  
  57.     }  
  58.         return  date;  
  59.           
  60.     }  
  61.       
  62.     /** 
  63.      * 得到当前时间,以字符串表示 
  64.      * @return 
  65.      */  
  66.     public static String getDate(){  
  67.         Date date = new Date();  
  68.         return CommUtil.dateToString(date);  
  69.     }  
  70. }  

日期转换类  DateConverter.java

[java] view plaincopy
  1. package com.util;  
  2.   
  3. import java.text.DateFormat;  
  4. import java.text.SimpleDateFormat;  
  5. import java.util.Date;  
  6. import java.util.Map;  
  7.   
  8. import com.opensymphony.xwork2.conversion.impl.DefaultTypeConverter;  
  9.   
  10. /** 
  11.  * 日期转换类 
  12.  * 
  13.  */  
  14. public class DateConverter extends DefaultTypeConverter {  
  15.     private static final DateFormat[] ACCEPT_DATE_FORMATS = {  
  16.             new SimpleDateFormat("dd/MM/yyyy"),  
  17.             new SimpleDateFormat("yyyy-MM-dd"),  
  18.             new SimpleDateFormat("yyyy/MM/dd") }; //支持转换的日期格式   
  19.   
  20.     @Override   
  21.     public Object convertValue(Map context, Object value, Class toType) {   
  22.         if (toType == Date.class) {  //浏览器向服务器提交时,进行String to Date的转换   
  23.             Date date = null;   
  24.             String dateString = null;   
  25.             String[] params = (String[])value;   
  26.             dateString = params[0];//获取日期的字符串   
  27.             for (DateFormat format : ACCEPT_DATE_FORMATS) {   
  28.                 try {   
  29.                     return format.parse(dateString);//遍历日期支持格式,进行转换   
  30.                 } catch(Exception e) {   
  31.                     continue;   
  32.                 }   
  33.             }   
  34.             return null;   
  35.         }   
  36.         else if (toType == String.class) {   //服务器向浏览器输出时,进行Date to String的类型转换   
  37.             Date date = (Date)value;   
  38.             return new SimpleDateFormat("yyyy-MM-dd").format(date);//输出的格式是yyyy-MM-dd   
  39.         }   
  40.           
  41.         return null;   
  42.     }  
  43. }  
[java] view plaincopy
  1. package com.util;  
  2.   
  3. import java.text.DateFormat;  
  4. import java.text.SimpleDateFormat;  
  5. import java.util.Date;  
  6. import java.util.Map;  
  7.   
  8. import com.opensymphony.xwork2.conversion.impl.DefaultTypeConverter;  
  9.   
  10. /** 
  11.  * 日期转换类 
  12.  * 
  13.  */  
  14. public class DateConverter extends DefaultTypeConverter {  
  15.     private static final DateFormat[] ACCEPT_DATE_FORMATS = {  
  16.             new SimpleDateFormat("dd/MM/yyyy"),  
  17.             new SimpleDateFormat("yyyy-MM-dd"),  
  18.             new SimpleDateFormat("yyyy/MM/dd") }; //支持转换的日期格式   
  19.   
  20.     @Override   
  21.     public Object convertValue(Map context, Object value, Class toType) {   
  22.         if (toType == Date.class) {  //浏览器向服务器提交时,进行String to Date的转换   
  23.             Date date = null;   
  24.             String dateString = null;   
  25.             String[] params = (String[])value;   
  26.             dateString = params[0];//获取日期的字符串   
  27.             for (DateFormat format : ACCEPT_DATE_FORMATS) {   
  28.                 try {   
  29.                     return format.parse(dateString);//遍历日期支持格式,进行转换   
  30.                 } catch(Exception e) {   
  31.                     continue;   
  32.                 }   
  33.             }   
  34.             return null;   
  35.         }   
  36.         else if (toType == String.class) {   //服务器向浏览器输出时,进行Date to String的类型转换   
  37.             Date date = (Date)value;   
  38.             return new SimpleDateFormat("yyyy-MM-dd").format(date);//输出的格式是yyyy-MM-dd   
  39.         }   
  40.           
  41.         return null;   
  42.     }  
  43. }  

功能更强大的格式化工具类 FormatUtils.java

 

[java] view plaincopy
  1. package com.util;  
  2.   
  3. import java.text.DecimalFormat;  
  4. import java.text.ParseException;  
  5. import java.text.SimpleDateFormat;  
  6. import java.util.Date;  
  7.   
  8. /** 
  9.  * 功能更强大的格式化工具类 
  10.  */  
  11. public class FormatUtils {  
  12.     private static SimpleDateFormat second = new SimpleDateFormat(  
  13.             "yy-MM-dd hh:mm:ss");  
  14.   
  15.     private static SimpleDateFormat day = new SimpleDateFormat("yyyy-MM-dd");  
  16.     private static SimpleDateFormat detailDay = new SimpleDateFormat("yyyy年MM月dd日");  
  17.     private static SimpleDateFormat fileName = new SimpleDateFormat("yyyy-MM-dd-HH-mm-ss");  
  18.     private static SimpleDateFormat tempTime = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");  
  19.     private static SimpleDateFormat excelDate = new SimpleDateFormat("yyyy/MM/dd");  
  20.       
  21.     /** 
  22.      * 格式化excel中的时间 
  23.      * @param date 
  24.      * @return 
  25.      */  
  26.     public static String formatDateForExcelDate(Date date) {  
  27.         return excelDate.format(date);  
  28.     }  
  29.       
  30.     /** 
  31.      * 将日期格式化作为文件名 
  32.      * @param date 
  33.      * @return 
  34.      */  
  35.     public static String formatDateForFileName(Date date) {  
  36.         return fileName.format(date);  
  37.     }  
  38.   
  39.     /** 
  40.      * 格式化日期(精确到秒) 
  41.      *  
  42.      * @param date 
  43.      * @return 
  44.      */  
  45.     public static String formatDateSecond(Date date) {  
  46.         return second.format(date);  
  47.     }  
  48.       
  49.     /** 
  50.      * 格式化日期(精确到秒) 
  51.      *  
  52.      * @param date 
  53.      * @return 
  54.      */  
  55.     public static String tempDateSecond(Date date) {  
  56.         return tempTime.format(date);  
  57.     }  
  58.   
  59.     public static Date tempDateSecond(String str) {  
  60.         try {  
  61.             return tempTime.parse(str);  
  62.         } catch (ParseException e) {  
  63.             e.printStackTrace();  
  64.         }  
  65.         return new Date();  
  66.     }  
  67.     /** 
  68.      * 格式化日期(精确到天) 
  69.      *  
  70.      * @param date 
  71.      * @return 
  72.      */  
  73.     public static String formatDateDay(Date date) {  
  74.         return day.format(date);  
  75.     }  
  76.       
  77.     /** 
  78.      * 格式化日期(精确到天) 
  79.      *  
  80.      * @param date 
  81.      * @return 
  82.      */  
  83.     public static String formatDateDetailDay(Date date) {  
  84.         return detailDay.format(date);  
  85.     }  
  86.   
  87.     /** 
  88.      * 将double类型的数字保留两位小数(四舍五入) 
  89.      *  
  90.      * @param number 
  91.      * @return 
  92.      */  
  93.     public static String formatNumber(double number) {  
  94.         DecimalFormat df = new DecimalFormat();  
  95.         df.applyPattern("#0.00");  
  96.         return df.format(number);  
  97.     }  
  98.   
  99.     /** 
  100.      * 将字符串转换成日期 
  101.      *  
  102.      * @param date 
  103.      * @return 
  104.      * @throws Exception 
  105.      */  
  106.     public static Date formateDate(String date) throws Exception {  
  107.         return day.parse(date);  
  108.     }  
  109.       
  110.     /** 
  111.      * 将字符日期转换成Date 
  112.      * @param date 
  113.      * @return 
  114.      * @throws Exception 
  115.      */  
  116.     public static Date parseStringToDate(String date) throws Exception {  
  117.         return day.parse(date);  
  118.     }  
  119.       
  120.     public static String formatDoubleNumber(double number) {  
  121.         DecimalFormat df = new DecimalFormat("#");  
  122.         return df.format(number);  
  123.     }  
  124. }  
[java] view plaincopy
  1. package com.util;  
  2.   
  3. import java.text.DecimalFormat;  
  4. import java.text.ParseException;  
  5. import java.text.SimpleDateFormat;  
  6. import java.util.Date;  
  7.   
  8. /** 
  9.  * 功能更强大的格式化工具类 
  10.  */  
  11. public class FormatUtils {  
  12.     private static SimpleDateFormat second = new SimpleDateFormat(  
  13.             "yy-MM-dd hh:mm:ss");  
  14.   
  15.     private static SimpleDateFormat day = new SimpleDateFormat("yyyy-MM-dd");  
  16.     private static SimpleDateFormat detailDay = new SimpleDateFormat("yyyy年MM月dd日");  
  17.     private static SimpleDateFormat fileName = new SimpleDateFormat("yyyy-MM-dd-HH-mm-ss");  
  18.     private static SimpleDateFormat tempTime = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");  
  19.     private static SimpleDateFormat excelDate = new SimpleDateFormat("yyyy/MM/dd");  
  20.       
  21.     /** 
  22.      * 格式化excel中的时间 
  23.      * @param date 
  24.      * @return 
  25.      */  
  26.     public static String formatDateForExcelDate(Date date) {  
  27.         return excelDate.format(date);  
  28.     }  
  29.       
  30.     /** 
  31.      * 将日期格式化作为文件名 
  32.      * @param date 
  33.      * @return 
  34.      */  
  35.     public static String formatDateForFileName(Date date) {  
  36.         return fileName.format(date);  
  37.     }  
  38.   
  39.     /** 
  40.      * 格式化日期(精确到秒) 
  41.      *  
  42.      * @param date 
  43.      * @return 
  44.      */  
  45.     public static String formatDateSecond(Date date) {  
  46.         return second.format(date);  
  47.     }  
  48.       
  49.     /** 
  50.      * 格式化日期(精确到秒) 
  51.      *  
  52.      * @param date 
  53.      * @return 
  54.      */  
  55.     public static String tempDateSecond(Date date) {  
  56.         return tempTime.format(date);  
  57.     }  
  58.   
  59.     public static Date tempDateSecond(String str) {  
  60.         try {  
  61.             return tempTime.parse(str);  
  62.         } catch (ParseException e) {  
  63.             e.printStackTrace();  
  64.         }  
  65.         return new Date();  
  66.     }  
  67.     /** 
  68.      * 格式化日期(精确到天) 
  69.      *  
  70.      * @param date 
  71.      * @return 
  72.      */  
  73.     public static String formatDateDay(Date date) {  
  74.         return day.format(date);  
  75.     }  
  76.       
  77.     /** 
  78.      * 格式化日期(精确到天) 
  79.      *  
  80.      * @param date 
  81.      * @return 
  82.      */  
  83.     public static String formatDateDetailDay(Date date) {  
  84.         return detailDay.format(date);  
  85.     }  
  86.   
  87.     /** 
  88.      * 将double类型的数字保留两位小数(四舍五入) 
  89.      *  
  90.      * @param number 
  91.      * @return 
  92.      */  
  93.     public static String formatNumber(double number) {  
  94.         DecimalFormat df = new DecimalFormat();  
  95.         df.applyPattern("#0.00");  
  96.         return df.format(number);  
  97.     }  
  98.   
  99.     /** 
  100.      * 将字符串转换成日期 
  101.      *  
  102.      * @param date 
  103.      * @return 
  104.      * @throws Exception 
  105.      */  
  106.     public static Date formateDate(String date) throws Exception {  
  107.         return day.parse(date);  
  108.     }  
  109.       
  110.     /** 
  111.      * 将字符日期转换成Date 
  112.      * @param date 
  113.      * @return 
  114.      * @throws Exception 
  115.      */  
  116.     public static Date parseStringToDate(String date) throws Exception {  
  117.         return day.parse(date);  
  118.     }  
  119.       
  120.     public static String formatDoubleNumber(double number) {  
  121.         DecimalFormat df = new DecimalFormat("#");  
  122.         return df.format(number);  
  123.     }  
  124. }  


 

 

文件操作工具类

 

目录操作工具类 CopyDir.java

[java] view plaincopy
  1. package com.util;  
  2.   
  3. import java.io.*;  
  4.   
  5. /** 
  6.  * 1,建立目的目录。 2,遍历源目录。 3,遍历过程中,创建文件或者文件夹。 原理:其实就是改变了源文件或者目录的目录头。 
  7.  * @datetime  Dsc  24 
  8.  */  
  9. public class CopyDir {  
  10.     private File sDir, dDir, newDir;  
  11.   
  12.     public CopyDir(String s, String d) {  
  13.         this(new File(s), new File(d));  
  14.     }  
  15.   
  16.     CopyDir(File sDir, File dDir)// c:\\Test d:\\abc  
  17.     {  
  18.         this.sDir = sDir;  
  19.         this.dDir = dDir;  
  20.     }  
  21.   
  22.     public void copyDir() throws IOException {  
  23.         // 是创建目的目录。也就是创建要拷贝的源文件夹。Test  
  24.         // 获取源文件夹名称。  
  25.         String name = sDir.getName();  
  26.         // 通过该名称在目的目录创建该文件夹,为了存放源文件夹中的文件或者文件夹。  
  27.         // 将目的目录和源文件夹名称,封装成File对象。  
  28.         newDir = dDir;  
  29.         // new File(dDir,name);  
  30.         // 调用该对象的mkdir方法。在目的目录创建该文件夹。d:\\abc\\Test  
  31.         newDir.mkdir();//  
  32.   
  33.         // 遍历源文件夹。  
  34.         listAll(sDir);  
  35.     }  
  36.   
  37.     /* 
  38.      * 将遍历目录封装成方法。 在遍历过程中,遇到文件创建文件。 遇到目录创建目录。 
  39.      */  
  40.     private void listAll(File dir) throws IOException {  
  41.         File[] files = dir.listFiles();  
  42.         for (int x = 0; x < files.length; x++) {  
  43.             if (files[x].isDirectory()) {  
  44.                 createDir(files[x]);// 调用创建目录的方法。  
  45.                 listAll(files[x]);// 在继续进行递归。进入子级目录。  
  46.             } else {  
  47.                 createFile(files[x]);// 调用创建文件的方法。  
  48.             }  
  49.         }  
  50.     }  
  51.   
  52.     /* 
  53.      * copy目录。通过源目录在目的目录创建新目录。 
  54.      */  
  55.     private void createDir(File dir) {  
  56.         File d = replaceFile(dir);  
  57.         d.mkdir();  
  58.     }  
  59.   
  60.     /* 
  61.      * copy文件。 
  62.      */  
  63.     private void createFile(File file) throws IOException {  
  64.         File newFile = replaceFile(file);  
  65.         // copy文件是一个数据数据传输的过程。需要通过流来完成。  
  66.         FileInputStream fis = new FileInputStream(file);  
  67.         FileOutputStream fos = new FileOutputStream(newFile);  
  68.         byte[] buf = new byte[1024 * 2];  
  69.         int num = 0;  
  70.         while ((num = fis.read(buf)) != -1) {  
  71.             fos.write(buf, 0, num);  
  72.         }  
  73.         fos.close();  
  74.         fis.close();  
  75.     }  
  76.   
  77.     /* 
  78.      * 替换路径。 
  79.      */  
  80.     private File replaceFile(File f) {  
  81.         // 原理是:将源目录的父目录(C:\\Tset),替换成目的父目录。(d:\\abc\\Test)  
  82.         String path = f.getAbsolutePath();// 获取源文件或者文件夹的决定路径。  
  83.         // 将源文件或者文件夹的绝对路径替换成目的路径。  
  84.         String newPath = path.replace(sDir.getAbsolutePath(), newDir  
  85.                 .getAbsolutePath());  
  86.         // 将新的目的路径封装成File对象  
  87.         File newFile = new File(newPath);  
  88.         return newFile;  
  89.     }  
  90. }  
[java] view plaincopy
  1. package com.util;  
  2.   
  3. import java.io.*;  
  4.   
  5. /** 
  6.  * 1,建立目的目录。 2,遍历源目录。 3,遍历过程中,创建文件或者文件夹。 原理:其实就是改变了源文件或者目录的目录头。 
  7.  * @datetime  Dsc  24 
  8.  */  
  9. public class CopyDir {  
  10.     private File sDir, dDir, newDir;  
  11.   
  12.     public CopyDir(String s, String d) {  
  13.         this(new File(s), new File(d));  
  14.     }  
  15.   
  16.     CopyDir(File sDir, File dDir)// c:\\Test d:\\abc  
  17.     {  
  18.         this.sDir = sDir;  
  19.         this.dDir = dDir;  
  20.     }  
  21.   
  22.     public void copyDir() throws IOException {  
  23.         // 是创建目的目录。也就是创建要拷贝的源文件夹。Test  
  24.         // 获取源文件夹名称。  
  25.         String name = sDir.getName();  
  26.         // 通过该名称在目的目录创建该文件夹,为了存放源文件夹中的文件或者文件夹。  
  27.         // 将目的目录和源文件夹名称,封装成File对象。  
  28.         newDir = dDir;  
  29.         // new File(dDir,name);  
  30.         // 调用该对象的mkdir方法。在目的目录创建该文件夹。d:\\abc\\Test  
  31.         newDir.mkdir();//  
  32.   
  33.         // 遍历源文件夹。  
  34.         listAll(sDir);  
  35.     }  
  36.   
  37.     /* 
  38.      * 将遍历目录封装成方法。 在遍历过程中,遇到文件创建文件。 遇到目录创建目录。 
  39.      */  
  40.     private void listAll(File dir) throws IOException {  
  41.         File[] files = dir.listFiles();  
  42.         for (int x = 0; x < files.length; x++) {  
  43.             if (files[x].isDirectory()) {  
  44.                 createDir(files[x]);// 调用创建目录的方法。  
  45.                 listAll(files[x]);// 在继续进行递归。进入子级目录。  
  46.             } else {  
  47.                 createFile(files[x]);// 调用创建文件的方法。  
  48.             }  
  49.         }  
  50.     }  
  51.   
  52.     /* 
  53.      * copy目录。通过源目录在目的目录创建新目录。 
  54.      */  
  55.     private void createDir(File dir) {  
  56.         File d = replaceFile(dir);  
  57.         d.mkdir();  
  58.     }  
  59.   
  60.     /* 
  61.      * copy文件。 
  62.      */  
  63.     private void createFile(File file) throws IOException {  
  64.         File newFile = replaceFile(file);  
  65.         // copy文件是一个数据数据传输的过程。需要通过流来完成。  
  66.         FileInputStream fis = new FileInputStream(file);  
  67.         FileOutputStream fos = new FileOutputStream(newFile);  
  68.         byte[] buf = new byte[1024 * 2];  
  69.         int num = 0;  
  70.         while ((num = fis.read(buf)) != -1) {  
  71.             fos.write(buf, 0, num);  
  72.         }  
  73.         fos.close();  
  74.         fis.close();  
  75.     }  
  76.   
  77.     /* 
  78.      * 替换路径。 
  79.      */  
  80.     private File replaceFile(File f) {  
  81.         // 原理是:将源目录的父目录(C:\\Tset),替换成目的父目录。(d:\\abc\\Test)  
  82.         String path = f.getAbsolutePath();// 获取源文件或者文件夹的决定路径。  
  83.         // 将源文件或者文件夹的绝对路径替换成目的路径。  
  84.         String newPath = path.replace(sDir.getAbsolutePath(), newDir  
  85.                 .getAbsolutePath());  
  86.         // 将新的目的路径封装成File对象  
  87.         File newFile = new File(newPath);  
  88.         return newFile;  
  89.     }  
  90. }  

文件/目录部分处理工具类 DealDir.java

[java] view plaincopy
  1. package com.util;  
  2.   
  3. import java.io.File;  
  4. import java.util.StringTokenizer;  
  5.   
  6. /** 
  7.  * 文件/目录 部分处理 
  8.  * @createTime Dec 25, 2010 7:06:58 AM 
  9.  * @version 1.0 
  10.  */  
  11. public class DealDir {  
  12.     /** 
  13.      * 获取文件的后缀名并转化成大写 
  14.      *  
  15.      * @param fileName 
  16.      *            文件名 
  17.      * @return 
  18.      */  
  19.     public String getFileSuffix(String fileName) throws Exception {  
  20.         return fileName.substring(fileName.lastIndexOf(".") + 1,  
  21.                 fileName.length()).toUpperCase();  
  22.     }  
  23.   
  24.     /** 
  25.      * 创建多级目录 
  26.      *  
  27.      * @param path 
  28.      *            目录的绝对路径 
  29.      */  
  30.     public void createMultilevelDir(String path) {  
  31.         try {  
  32.             StringTokenizer st = new StringTokenizer(path, "/");  
  33.             String path1 = st.nextToken() + "/";  
  34.             String path2 = path1;  
  35.             while (st.hasMoreTokens()) {  
  36.   
  37.                 path1 = st.nextToken() + "/";  
  38.                 path2 += path1;  
  39.                 File inbox = new File(path2);  
  40.                 if (!inbox.exists())  
  41.                     inbox.mkdir();  
  42.   
  43.             }  
  44.         } catch (Exception e) {  
  45.             System.out.println("目录创建失败" + e);  
  46.             e.printStackTrace();  
  47.         }  
  48.   
  49.     }  
  50.   
  51.     /** 
  52.      * 删除文件/目录(递归删除文件/目录) 
  53.      *  
  54.      * @param path 
  55.      *            文件或文件夹的绝对路径 
  56.      */  
  57.     public void deleteAll(String dirpath) {  
  58.         if (dirpath == null) {  
  59.             System.out.println("目录为空");  
  60.         } else {  
  61.             File path = new File(dirpath);  
  62.             try {  
  63.                 if (!path.exists())  
  64.                     return;// 目录不存在退出  
  65.                 if (path.isFile()) // 如果是文件删除  
  66.                 {  
  67.                     path.delete();  
  68.                     return;  
  69.                 }  
  70.                 File[] files = path.listFiles();// 如果目录中有文件递归删除文件  
  71.                 for (int i = 0; i < files.length; i++) {  
  72.                     deleteAll(files[i].getAbsolutePath());  
  73.                 }  
  74.                 path.delete();  
  75.   
  76.             } catch (Exception e) {  
  77.                 System.out.println("文件/目录 删除失败" + e);  
  78.                 e.printStackTrace();  
  79.             }  
  80.         }  
  81.     }  
  82.   
  83.     /** 
  84.      * 文件/目录 重命名 
  85.      *  
  86.      * @param oldPath 
  87.      *            原有路径(绝对路径) 
  88.      * @param newPath 
  89.      *            更新路径 
  90.      * @author lyf 注:不能修改上层次的目录 
  91.      */  
  92.     public void renameDir(String oldPath, String newPath) {  
  93.         File oldFile = new File(oldPath);// 文件或目录  
  94.         File newFile = new File(newPath);// 文件或目录  
  95.         try {  
  96.             boolean success = oldFile.renameTo(newFile);// 重命名  
  97.             if (!success) {  
  98.                 System.out.println("重命名失败");  
  99.             } else {  
  100.                 System.out.println("重命名成功");  
  101.             }  
  102.         } catch (RuntimeException e) {  
  103.             e.printStackTrace();  
  104.         }  
  105.   
  106.     }  
  107.   
  108. }  
[java] view plaincopy
  1. package com.util;  
  2.   
  3. import java.io.File;  
  4. import java.util.StringTokenizer;  
  5.   
  6. /** 
  7.  * 文件/目录 部分处理 
  8.  * @createTime Dec 25, 2010 7:06:58 AM 
  9.  * @version 1.0 
  10.  */  
  11. public class DealDir {  
  12.     /** 
  13.      * 获取文件的后缀名并转化成大写 
  14.      *  
  15.      * @param fileName 
  16.      *            文件名 
  17.      * @return 
  18.      */  
  19.     public String getFileSuffix(String fileName) throws Exception {  
  20.         return fileName.substring(fileName.lastIndexOf(".") + 1,  
  21.                 fileName.length()).toUpperCase();  
  22.     }  
  23.   
  24.     /** 
  25.      * 创建多级目录 
  26.      *  
  27.      * @param path 
  28.      *            目录的绝对路径 
  29.      */  
  30.     public void createMultilevelDir(String path) {  
  31.         try {  
  32.             StringTokenizer st = new StringTokenizer(path, "/");  
  33.             String path1 = st.nextToken() + "/";  
  34.             String path2 = path1;  
  35.             while (st.hasMoreTokens()) {  
  36.   
  37.                 path1 = st.nextToken() + "/";  
  38.                 path2 += path1;  
  39.                 File inbox = new File(path2);  
  40.                 if (!inbox.exists())  
  41.                     inbox.mkdir();  
  42.   
  43.             }  
  44.         } catch (Exception e) {  
  45.             System.out.println("目录创建失败" + e);  
  46.             e.printStackTrace();  
  47.         }  
  48.   
  49.     }  
  50.   
  51.     /** 
  52.      * 删除文件/目录(递归删除文件/目录) 
  53.      *  
  54.      * @param path 
  55.      *            文件或文件夹的绝对路径 
  56.      */  
  57.     public void deleteAll(String dirpath) {  
  58.         if (dirpath == null) {  
  59.             System.out.println("目录为空");  
  60.         } else {  
  61.             File path = new File(dirpath);  
  62.             try {  
  63.                 if (!path.exists())  
  64.                     return;// 目录不存在退出  
  65.                 if (path.isFile()) // 如果是文件删除  
  66.                 {  
  67.                     path.delete();  
  68.                     return;  
  69.                 }  
  70.                 File[] files = path.listFiles();// 如果目录中有文件递归删除文件  
  71.                 for (int i = 0; i < files.length; i++) {  
  72.                     deleteAll(files[i].getAbsolutePath());  
  73.                 }  
  74.                 path.delete();  
  75.   
  76.             } catch (Exception e) {  
  77.                 System.out.println("文件/目录 删除失败" + e);  
  78.                 e.printStackTrace();  
  79.             }  
  80.         }  
  81.     }  
  82.   
  83.     /** 
  84.      * 文件/目录 重命名 
  85.      *  
  86.      * @param oldPath 
  87.      *            原有路径(绝对路径) 
  88.      * @param newPath 
  89.      *            更新路径 
  90.      * @author lyf 注:不能修改上层次的目录 
  91.      */  
  92.     public void renameDir(String oldPath, String newPath) {  
  93.         File oldFile = new File(oldPath);// 文件或目录  
  94.         File newFile = new File(newPath);// 文件或目录  
  95.         try {  
  96.             boolean success = oldFile.renameTo(newFile);// 重命名  
  97.             if (!success) {  
  98.                 System.out.println("重命名失败");  
  99.             } else {  
  100.                 System.out.println("重命名成功");  
  101.             }  
  102.         } catch (RuntimeException e) {  
  103.             e.printStackTrace();  
  104.         }  
  105.   
  106.     }  
  107.   
  108. }  

 

目录处理工具类 DealWithDir.java

[java] view plaincopy
  1. package com.util;  
  2.   
  3. import java.io.File;  
  4.   
  5. /** 
  6.  * 目录处理工具类 
  7.  * 
  8.  */  
  9. public class DealWithDir {  
  10.     /** 
  11.      * 新建目录 
  12.      */  
  13.     public static boolean newDir(String path) throws Exception {  
  14.         File file = new File(path);  
  15.         return file.mkdirs();//创建目录  
  16.     }  
  17.       
  18.     /** 
  19.      * 删除目录 
  20.      */  
  21.     public static boolean deleteDir(String path) throws Exception {  
  22.         File file = new File(path);  
  23.         if (!file.exists())  
  24.             return false;// 目录不存在退出  
  25.         if (file.isFile()) // 如果是文件删除  
  26.         {  
  27.             file.delete();  
  28.             return false;  
  29.         }  
  30.         File[] files = file.listFiles();// 如果目录中有文件递归删除文件  
  31.         for (int i = 0; i < files.length; i++) {  
  32.             deleteDir(files[i].getAbsolutePath());  
  33.         }  
  34.         file.delete();  
  35.           
  36.         return file.delete();//删除目录  
  37.     }  
  38.   
  39.     /** 
  40.      * 更新目录 
  41.      */  
  42.     public static boolean updateDir(String path, String newPath) throws Exception {  
  43.         File file = new File(path);  
  44.         File newFile = new File(newPath);  
  45.         return file.renameTo(newFile);  
  46.     }  
  47.       
  48.     public static void main(String d[]) throws Exception{  
  49.         //deleteDir("d:/ff/dddf");  
  50.         updateDir("D:\\TOOLS\\Tomcat 6.0\\webapps\\BCCCSM\\nationalExperiment/22222""D:\\TOOLS\\Tomcat 6.0\\webapps\\BCCCSM\\nationalExperiment/224222");  
  51.     }  
  52.       
  53.       
  54. }  
[java] view plaincopy
  1. package com.util;  
  2.   
  3. import java.io.File;  
  4.   
  5. /** 
  6.  * 目录处理工具类 
  7.  * 
  8.  */  
  9. public class DealWithDir {  
  10.     /** 
  11.      * 新建目录 
  12.      */  
  13.     public static boolean newDir(String path) throws Exception {  
  14.         File file = new File(path);  
  15.         return file.mkdirs();//创建目录  
  16.     }  
  17.       
  18.     /** 
  19.      * 删除目录 
  20.      */  
  21.     public static boolean deleteDir(String path) throws Exception {  
  22.         File file = new File(path);  
  23.         if (!file.exists())  
  24.             return false;// 目录不存在退出  
  25.         if (file.isFile()) // 如果是文件删除  
  26.         {  
  27.             file.delete();  
  28.             return false;  
  29.         }  
  30.         File[] files = file.listFiles();// 如果目录中有文件递归删除文件  
  31.         for (int i = 0; i < files.length; i++) {  
  32.             deleteDir(files[i].getAbsolutePath());  
  33.         }  
  34.         file.delete();  
  35.           
  36.         return file.delete();//删除目录  
  37.     }  
  38.   
  39.     /** 
  40.      * 更新目录 
  41.      */  
  42.     public static boolean updateDir(String path, String newPath) throws Exception {  
  43.         File file = new File(path);  
  44.         File newFile = new File(newPath);  
  45.         return file.renameTo(newFile);  
  46.     }  
  47.       
  48.     public static void main(String d[]) throws Exception{  
  49.         //deleteDir("d:/ff/dddf");  
  50.         updateDir("D:\\TOOLS\\Tomcat 6.0\\webapps\\BCCCSM\\nationalExperiment/22222""D:\\TOOLS\\Tomcat 6.0\\webapps\\BCCCSM\\nationalExperiment/224222");  
  51.     }  
  52.       
  53.       
  54. }  

 

删除文件夹工具类 DeleteFolder.java

 

[java] view plaincopy
  1. package com.util;  
  2.   
  3. import java.io.File;  
  4.   
  5. /** 
  6.  * 删除文件夹 
  7.  * @createTime DSC 20, 2010 15:38 
  8.  * @version 2.0 
  9.  */  
  10. public class DeleteFolder {  
  11.     // 删除文件夹  
  12.     // param folderPath 文件夹完整绝对路径  
  13.     public static void delFolder(String folderPath) {  
  14.         try {  
  15.             delAllFile(folderPath); // 删除完里面所有内容  
  16.             String filePath = folderPath;  
  17.             filePath = filePath.toString();  
  18.             java.io.File myFilePath = new java.io.File(filePath);  
  19.             myFilePath.delete(); // 删除空文件夹  
  20.         } catch (Exception e) {  
  21.             e.printStackTrace();  
  22.         }  
  23.     }  
  24.   
  25.     // 删除指定文件夹下所有文件  
  26.     // param path 文件夹完整绝对路径  
  27.     public static boolean delAllFile(String path) {  
  28.         boolean flag = false;  
  29.         File file = new File(path);  
  30.         if (!file.exists()) {  
  31.             return flag;  
  32.         }  
  33.         if (!file.isDirectory()) {  
  34.             return flag;  
  35.         }  
  36.         String[] tempList = file.list();  
  37.         File temp = null;  
  38.         for (int i = 0; i < tempList.length; i++) {  
  39.             if (path.endsWith(File.separator)) {  
  40.                 temp = new File(path + tempList[i]);  
  41.             } else {  
  42.                 temp = new File(path + File.separator + tempList[i]);  
  43.             }  
  44.             if (temp.isFile()) {  
  45.                 temp.delete();  
  46.             }  
  47.             if (temp.isDirectory()) {  
  48.                 delAllFile(path + "/" + tempList[i]);// 先删除文件夹里面的文件  
  49.                 delFolder(path + "/" + tempList[i]);// 再删除空文件夹  
  50.                 flag = true;  
  51.             }  
  52.         }  
  53.         return flag;  
  54.     }  
  55.   
  56. }  
[java] view plaincopy
  1. package com.util;  
  2.   
  3. import java.io.File;  
  4.   
  5. /** 
  6.  * 删除文件夹 
  7.  * @createTime DSC 20, 2010 15:38 
  8.  * @version 2.0 
  9.  */  
  10. public class DeleteFolder {  
  11.     // 删除文件夹  
  12.     // param folderPath 文件夹完整绝对路径  
  13.     public static void delFolder(String folderPath) {  
  14.         try {  
  15.             delAllFile(folderPath); // 删除完里面所有内容  
  16.             String filePath = folderPath;  
  17.             filePath = filePath.toString();  
  18.             java.io.File myFilePath = new java.io.File(filePath);  
  19.             myFilePath.delete(); // 删除空文件夹  
  20.         } catch (Exception e) {  
  21.             e.printStackTrace();  
  22.         }  
  23.     }  
  24.   
  25.     // 删除指定文件夹下所有文件  
  26.     // param path 文件夹完整绝对路径  
  27.     public static boolean delAllFile(String path) {  
  28.         boolean flag = false;  
  29.         File file = new File(path);  
  30.         if (!file.exists()) {  
  31.             return flag;  
  32.         }  
  33.         if (!file.isDirectory()) {  
  34.             return flag;  
  35.         }  
  36.         String[] tempList = file.list();  
  37.         File temp = null;  
  38.         for (int i = 0; i < tempList.length; i++) {  
  39.             if (path.endsWith(File.separator)) {  
  40.                 temp = new File(path + tempList[i]);  
  41.             } else {  
  42.                 temp = new File(path + File.separator + tempList[i]);  
  43.             }  
  44.             if (temp.isFile()) {  
  45.                 temp.delete();  
  46.             }  
  47.             if (temp.isDirectory()) {  
  48.                 delAllFile(path + "/" + tempList[i]);// 先删除文件夹里面的文件  
  49.                 delFolder(path + "/" + tempList[i]);// 再删除空文件夹  
  50.                 flag = true;  
  51.             }  
  52.         }  
  53.         return flag;  
  54.     }  
  55.   
  56. }  


 

文件上传工具类 UploadUtil.java

[java] view plaincopy
  1. package com.util;  
  2.   
  3. import java.io.BufferedInputStream;  
  4. import java.io.BufferedOutputStream;  
  5. import java.io.File;  
  6. import java.io.FileInputStream;  
  7. import java.io.FileOutputStream;  
  8. import java.io.InputStream;  
  9. import java.io.OutputStream;  
  10. import java.util.Calendar;  
  11.   
  12. /** 
  13.  * 文件上传工具类 
  14.  * 
  15.  */  
  16. public class UploadUtil {  
  17.     private static final int BUFFER_SIZE = 16 * 1024;  
  18.     //保存图片  
  19.     public static synchronized void copy(File src, File newFile) {  
  20.           
  21.         try {  
  22.             InputStream is = null;  
  23.             OutputStream os = null;  
  24.             try {  
  25.                 is = new BufferedInputStream(new FileInputStream(src),  
  26.                         BUFFER_SIZE);  
  27.                 os = new BufferedOutputStream(new FileOutputStream(newFile),  
  28.                         BUFFER_SIZE);  
  29.                 byte[] buffer = new byte[BUFFER_SIZE];  
  30.                 while (is.read(buffer) > 0) {  
  31.                     os.write(buffer);  
  32.                 }  
  33.             } finally {  
  34.                 if (null != is) {  
  35.                     is.close();  
  36.                 }  
  37.                 if (null != os) {  
  38.                     os.close();  
  39.                 }  
  40.             }  
  41.         } catch (Exception e) {  
  42.             e.printStackTrace();  
  43.         }  
  44.     }  
  45.   
  46.     /** 
  47.      * 返回 年号+月号+天+时+分+秒+随机码 
  48.      * @return 
  49.      */  
  50.     @SuppressWarnings("static-access")  
  51.     public static synchronized String getTime() {  
  52.         Calendar calendar = Calendar.getInstance();  
  53.         String year = calendar.get(calendar.YEAR) + "";  
  54.         String month = (calendar.get(calendar.MONTH) + 1) + "";  
  55.         String day = calendar.get(calendar.DAY_OF_MONTH) + "";  
  56.         String hour = calendar.get(calendar.HOUR_OF_DAY) + "";  
  57.         String minute = calendar.get(calendar.MINUTE) + "";  
  58.         String second = calendar.get(calendar.SECOND) + "";  
  59.         String milliSecond = calendar.get(calendar.MILLISECOND) + "";  
  60.         int r = (int)(Math.random()*100000);  
  61.         String random = String.valueOf(r);  
  62.         return year + month + day + hour + minute + second + milliSecond + random+"a";  
  63.     }  
  64.   
  65. }  
[java] view plaincopy
  1. package com.util;  
  2.   
  3. import java.io.BufferedInputStream;  
  4. import java.io.BufferedOutputStream;  
  5. import java.io.File;  
  6. import java.io.FileInputStream;  
  7. import java.io.FileOutputStream;  
  8. import java.io.InputStream;  
  9. import java.io.OutputStream;  
  10. import java.util.Calendar;  
  11.   
  12. /** 
  13.  * 文件上传工具类 
  14.  * 
  15.  */  
  16. public class UploadUtil {  
  17.     private static final int BUFFER_SIZE = 16 * 1024;  
  18.     //保存图片  
  19.     public static synchronized void copy(File src, File newFile) {  
  20.           
  21.         try {  
  22.             InputStream is = null;  
  23.             OutputStream os = null;  
  24.             try {  
  25.                 is = new BufferedInputStream(new FileInputStream(src),  
  26.                         BUFFER_SIZE);  
  27.                 os = new BufferedOutputStream(new FileOutputStream(newFile),  
  28.                         BUFFER_SIZE);  
  29.                 byte[] buffer = new byte[BUFFER_SIZE];  
  30.                 while (is.read(buffer) > 0) {  
  31.                     os.write(buffer);  
  32.                 }  
  33.             } finally {  
  34.                 if (null != is) {  
  35.                     is.close();  
  36.                 }  
  37.                 if (null != os) {  
  38.                     os.close();  
  39.                 }  
  40.             }  
  41.         } catch (Exception e) {  
  42.             e.printStackTrace();  
  43.         }  
  44.     }  
  45.   
  46.     /** 
  47.      * 返回 年号+月号+天+时+分+秒+随机码 
  48.      * @return 
  49.      */  
  50.     @SuppressWarnings("static-access")  
  51.     public static synchronized String getTime() {  
  52.         Calendar calendar = Calendar.getInstance();  
  53.         String year = calendar.get(calendar.YEAR) + "";  
  54.         String month = (calendar.get(calendar.MONTH) + 1) + "";  
  55.         String day = calendar.get(calendar.DAY_OF_MONTH) + "";  
  56.         String hour = calendar.get(calendar.HOUR_OF_DAY) + "";  
  57.         String minute = calendar.get(calendar.MINUTE) + "";  
  58.         String second = calendar.get(calendar.SECOND) + "";  
  59.         String milliSecond = calendar.get(calendar.MILLISECOND) + "";  
  60.         int r = (int)(Math.random()*100000);  
  61.         String random = String.valueOf(r);  
  62.         return year + month + day + hour + minute + second + milliSecond + random+"a";  
  63.     }  
  64.   
  65. }  

 

 

其他工具类

MD5编码工具类 MD5Code.java

[java] view plaincopy
  1. package com.util;  
  2. /** 
  3.  * MD5编码工具类 
  4.  * 
  5.  */  
  6. public class MD5Code {  
  7.     static final int S11 = 7;  
  8.   
  9.     static final int S12 = 12;  
  10.   
  11.     static final int S13 = 17;  
  12.   
  13.     static final int S14 = 22;  
  14.   
  15.     static final int S21 = 5;  
  16.   
  17.     static final int S22 = 9;  
  18.   
  19.     static final int S23 = 14;  
  20.   
  21.     static final int S24 = 20;  
  22.   
  23.     static final int S31 = 4;  
  24.   
  25.     static final int S32 = 11;  
  26.   
  27.     static final int S33 = 16;  
  28.   
  29.     static final int S34 = 23;  
  30.   
  31.     static final int S41 = 6;  
  32.   
  33.     static final int S42 = 10;  
  34.   
  35.     static final int S43 = 15;  
  36.   
  37.     static final int S44 = 21;  
  38.   
  39.     static final byte[] PADDING = { -128000000000000,  
  40.             0000000000000000000000,  
  41.             0000000000000000000000,  
  42.             0000000 };  
  43.   
  44.     private long[] state = new long[4];// state (ABCD)  
  45.   
  46.     private long[] count = new long[2];// number of bits, modulo 2^64 (lsb  
  47.   
  48.     // first)  
  49.   
  50.     private byte[] buffer = new byte[64]; // input buffer  
  51.   
  52.   
  53.     public String digestHexStr;  
  54.       
  55.     private byte[] digest = new byte[16];  
  56.   
  57.     public String getMD5ofStr(String inbuf) {  
  58.         md5Init();  
  59.         md5Update(inbuf.getBytes(), inbuf.length());  
  60.         md5Final();  
  61.         digestHexStr = "";  
  62.         for (int i = 0; i < 16; i++) {  
  63.             digestHexStr += byteHEX(digest[i]);  
  64.         }  
  65.         return digestHexStr;  
  66.     }  
  67.   
  68.     public MD5Code() {  
  69.         md5Init();  
  70.         return;  
  71.     }  
  72.   
  73.     private void md5Init() {  
  74.         count[0] = 0L;  
  75.         count[1] = 0L;  
  76.         // /* Load magic initialization constants.  
  77.         state[0] = 0x67452301L;  
  78.         state[1] = 0xefcdab89L;  
  79.         state[2] = 0x98badcfeL;  
  80.         state[3] = 0x10325476L;  
  81.         return;  
  82.     }  
  83.   
  84.     private long F(long x, long y, long z) {  
  85.         return (x & y) | ((~x) & z);  
  86.     }  
  87.   
  88.     private long G(long x, long y, long z) {  
  89.         return (x & z) | (y & (~z));  
  90.     }  
  91.   
  92.     private long H(long x, long y, long z) {  
  93.         return x ^ y ^ z;  
  94.     }  
  95.   
  96.     private long I(long x, long y, long z) {  
  97.         return y ^ (x | (~z));  
  98.     }  
  99.   
  100.     private long FF(long a, long b, long c, long d, long x, long s, long ac) {  
  101.         a += F(b, c, d) + x + ac;  
  102.         a = ((int) a << s) | ((int) a >>> (32 - s));  
  103.         a += b;  
  104.         return a;  
  105.     }  
  106.   
  107.     private long GG(long a, long b, long c, long d, long x, long s, long ac) {  
  108.         a += G(b, c, d) + x + ac;  
  109.         a = ((int) a << s) | ((int) a >>> (32 - s));  
  110.         a += b;  
  111.         return a;  
  112.     }  
  113.   
  114.     private long HH(long a, long b, long c, long d, long x, long s, long ac) {  
  115.         a += H(b, c, d) + x + ac;  
  116.         a = ((int) a << s) | ((int) a >>> (32 - s));  
  117.         a += b;  
  118.         return a;  
  119.     }  
  120.   
  121.     private long II(long a, long b, long c, long d, long x, long s, long ac) {  
  122.         a += I(b, c, d) + x + ac;  
  123.         a = ((int) a << s) | ((int) a >>> (32 - s));  
  124.         a += b;  
  125.         return a;  
  126.     }  
  127.   
  128.     private void md5Update(byte[] inbuf, int inputLen) {  
  129.         int i, index, partLen;  
  130.         byte[] block = new byte[64];  
  131.         index = (int) (count[0] >>> 3) & 0x3F;  
  132.         // /* Update number of bits */  
  133.         if ((count[0] += (inputLen << 3)) < (inputLen << 3))  
  134.             count[1]++;  
  135.         count[1] += (inputLen >>> 29);  
  136.         partLen = 64 - index;  
  137.         // Transform as many times as possible.  
  138.         if (inputLen >= partLen) {  
  139.             md5Memcpy(buffer, inbuf, index, 0, partLen);  
  140.             md5Transform(buffer);  
  141.             for (i = partLen; i + 63 < inputLen; i += 64) {  
  142.                 md5Memcpy(block, inbuf, 0, i, 64);  
  143.                 md5Transform(block);  
  144.             }  
  145.             index = 0;  
  146.         } else  
  147.             i = 0;  
  148.         // /* Buffer remaining input */  
  149.         md5Memcpy(buffer, inbuf, index, i, inputLen - i);  
  150.     }  
  151.   
  152.     private void md5Final() {  
  153.         byte[] bits = new byte[8];  
  154.         int index, padLen;  
  155.         // /* Save number of bits */  
  156.         Encode(bits, count, 8);  
  157.         // /* Pad out to 56 mod 64.  
  158.         index = (int) (count[0] >>> 3) & 0x3f;  
  159.         padLen = (index < 56) ? (56 - index) : (120 - index);  
  160.         md5Update(PADDING, padLen);  
  161.         // /* Append length (before padding) */  
  162.         md5Update(bits, 8);  
  163.         // /* Store state in digest */  
  164.         Encode(digest, state, 16);  
  165.     }  
  166.   
  167.     private void md5Memcpy(byte[] output, byte[] input, int outpos, int inpos,  
  168.             int len) {  
  169.         int i;  
  170.         for (i = 0; i < len; i++)  
  171.             output[outpos + i] = input[inpos + i];  
  172.     }  
  173.   
  174.     private void md5Transform(byte block[]) {  
  175.         long a = state[0], b = state[1], c = state[2], d = state[3];  
  176.         long[] x = new long[16];  
  177.         Decode(x, block, 64);  
  178.         /* Round 1 */  
  179.         a = FF(a, b, c, d, x[0], S11, 0xd76aa478L); /* 1 */  
  180.         d = FF(d, a, b, c, x[1], S12, 0xe8c7b756L); /* 2 */  
  181.         c = FF(c, d, a, b, x[2], S13, 0x242070dbL); /* 3 */  
  182.         b = FF(b, c, d, a, x[3], S14, 0xc1bdceeeL); /* 4 */  
  183.         a = FF(a, b, c, d, x[4], S11, 0xf57c0fafL); /* 5 */  
  184.         d = FF(d, a, b, c, x[5], S12, 0x4787c62aL); /* 6 */  
  185.         c = FF(c, d, a, b, x[6], S13, 0xa8304613L); /* 7 */  
  186.         b = FF(b, c, d, a, x[7], S14, 0xfd469501L); /* 8 */  
  187.         a = FF(a, b, c, d, x[8], S11, 0x698098d8L); /* 9 */  
  188.         d = FF(d, a, b, c, x[9], S12, 0x8b44f7afL); /* 10 */  
  189.         c = FF(c, d, a, b, x[10], S13, 0xffff5bb1L); /* 11 */  
  190.         b = FF(b, c, d, a, x[11], S14, 0x895cd7beL); /* 12 */  
  191.         a = FF(a, b, c, d, x[12], S11, 0x6b901122L); /* 13 */  
  192.         d = FF(d, a, b, c, x[13], S12, 0xfd987193L); /* 14 */  
  193.         c = FF(c, d, a, b, x[14], S13, 0xa679438eL); /* 15 */  
  194.         b = FF(b, c, d, a, x[15], S14, 0x49b40821L); /* 16 */  
  195.         /* Round 2 */  
  196.         a = GG(a, b, c, d, x[1], S21, 0xf61e2562L); /* 17 */  
  197.         d = GG(d, a, b, c, x[6], S22, 0xc040b340L); /* 18 */  
  198.         c = GG(c, d, a, b, x[11], S23, 0x265e5a51L); /* 19 */  
  199.         b = GG(b, c, d, a, x[0], S24, 0xe9b6c7aaL); /* 20 */  
  200.         a = GG(a, b, c, d, x[5], S21, 0xd62f105dL); /* 21 */  
  201.         d = GG(d, a, b, c, x[10], S22, 0x2441453L); /* 22 */  
  202.         c = GG(c, d, a, b, x[15], S23, 0xd8a1e681L); /* 23 */  
  203.         b = GG(b, c, d, a, x[4], S24, 0xe7d3fbc8L); /* 24 */  
  204.         a = GG(a, b, c, d, x[9], S21, 0x21e1cde6L); /* 25 */  
  205.         d = GG(d, a, b, c, x[14], S22, 0xc33707d6L); /* 26 */  
  206.         c = GG(c, d, a, b, x[3], S23, 0xf4d50d87L); /* 27 */  
  207.         b = GG(b, c, d, a, x[8], S24, 0x455a14edL); /* 28 */  
  208.         a = GG(a, b, c, d, x[13], S21, 0xa9e3e905L); /* 29 */  
  209.         d = GG(d, a, b, c, x[2], S22, 0xfcefa3f8L); /* 30 */  
  210.         c = GG(c, d, a, b, x[7], S23, 0x676f02d9L); /* 31 */  
  211.         b = GG(b, c, d, a, x[12], S24, 0x8d2a4c8aL); /* 32 */  
  212.         /* Round 3 */  
  213.         a = HH(a, b, c, d, x[5], S31, 0xfffa3942L); /* 33 */  
  214.         d = HH(d, a, b, c, x[8], S32, 0x8771f681L); /* 34 */  
  215.         c = HH(c, d, a, b, x[11], S33, 0x6d9d6122L); /* 35 */  
  216.         b = HH(b, c, d, a, x[14], S34, 0xfde5380cL); /* 36 */  
  217.         a = HH(a, b, c, d, x[1], S31, 0xa4beea44L); /* 37 */  
  218.         d = HH(d, a, b, c, x[4], S32, 0x4bdecfa9L); /* 38 */  
  219.         c = HH(c, d, a, b, x[7], S33, 0xf6bb4b60L); /* 39 */  
  220.         b = HH(b, c, d, a, x[10], S34, 0xbebfbc70L); /* 40 */  
  221.         a = HH(a, b, c, d, x[13], S31, 0x289b7ec6L); /* 41 */  
  222.         d = HH(d, a, b, c, x[0], S32, 0xeaa127faL); /* 42 */  
  223.         c = HH(c, d, a, b, x[3], S33, 0xd4ef3085L); /* 43 */  
  224.         b = HH(b, c, d, a, x[6], S34, 0x4881d05L); /* 44 */  
  225.         a = HH(a, b, c, d, x[9], S31, 0xd9d4d039L); /* 45 */  
  226.         d = HH(d, a, b, c, x[12], S32, 0xe6db99e5L); /* 46 */  
  227.         c = HH(c, d, a, b, x[15], S33, 0x1fa27cf8L); /* 47 */  
  228.         b = HH(b, c, d, a, x[2], S34, 0xc4ac5665L); /* 48 */  
  229.         /* Round 4 */  
  230.         a = II(a, b, c, d, x[0], S41, 0xf4292244L); /* 49 */  
  231.         d = II(d, a, b, c, x[7], S42, 0x432aff97L); /* 50 */  
  232.         c = II(c, d, a, b, x[14], S43, 0xab9423a7L); /* 51 */  
  233.         b = II(b, c, d, a, x[5], S44, 0xfc93a039L); /* 52 */  
  234.         a = II(a, b, c, d, x[12], S41, 0x655b59c3L); /* 53 */  
  235.         d = II(d, a, b, c, x[3], S42, 0x8f0ccc92L); /* 54 */  
  236.         c = II(c, d, a, b, x[10], S43, 0xffeff47dL); /* 55 */  
  237.         b = II(b, c, d, a, x[1], S44, 0x85845dd1L); /* 56 */  
  238.         a = II(a, b, c, d, x[8], S41, 0x6fa87e4fL); /* 57 */  
  239.         d = II(d, a, b, c, x[15], S42, 0xfe2ce6e0L); /* 58 */  
  240.         c = II(c, d, a, b, x[6], S43, 0xa3014314L); /* 59 */  
  241.         b = II(b, c, d, a, x[13], S44, 0x4e0811a1L); /* 60 */  
  242.         a = II(a, b, c, d, x[4], S41, 0xf7537e82L); /* 61 */  
  243.         d = II(d, a, b, c, x[11], S42, 0xbd3af235L); /* 62 */  
  244.         c = II(c, d, a, b, x[2], S43, 0x2ad7d2bbL); /* 63 */  
  245.         b = II(b, c, d, a, x[9], S44, 0xeb86d391L); /* 64 */  
  246.         state[0] += a;  
  247.         state[1] += b;  
  248.         state[2] += c;  
  249.         state[3] += d;  
  250.     }  
  251.   
  252.     private void Encode(byte[] output, long[] input, int len) {  
  253.         int i, j;  
  254.         for (i = 0, j = 0; j < len; i++, j += 4) {  
  255.             output[j] = (byte) (input[i] & 0xffL);  
  256.             output[j + 1] = (byte) ((input[i] >>> 8) & 0xffL);  
  257.             output[j + 2] = (byte) ((input[i] >>> 16) & 0xffL);  
  258.             output[j + 3] = (byte) ((input[i] >>> 24) & 0xffL);  
  259.         }  
  260.     }  
  261.   
  262.     private void Decode(long[] output, byte[] input, int len) {  
  263.         int i, j;  
  264.         for (i = 0, j = 0; j < len; i++, j += 4)  
  265.             output[i] = b2iu(input[j]) | (b2iu(input[j + 1]) << 8)  
  266.                     | (b2iu(input[j + 2]) << 16) | (b2iu(input[j + 3]) << 24);  
  267.         return;  
  268.     }  
  269.   
  270.     public static long b2iu(byte b) {  
  271.         return b < 0 ? b & 0x7F + 128 : b;  
  272.     }  
  273.       
  274.     public static String byteHEX(byte ib) {  
  275.         char[] Digit = { '0''1''2''3''4''5''6''7''8''9''A',  
  276.                 'B''C''D''E''F' };  
  277.         char[] ob = new char[2];  
  278.         ob[0] = Digit[(ib >>> 4) & 0X0F];  
  279.         ob[1] = Digit[ib & 0X0F];  
  280.         String s = new String(ob);  
  281.         return s;  
  282.     }  
  283. }  
[java] view plaincopy
  1. package com.util;  
  2. /** 
  3.  * MD5编码工具类 
  4.  * 
  5.  */  
  6. public class MD5Code {  
  7.     static final int S11 = 7;  
  8.   
  9.     static final int S12 = 12;  
  10.   
  11.     static final int S13 = 17;  
  12.   
  13.     static final int S14 = 22;  
  14.   
  15.     static final int S21 = 5;  
  16.   
  17.     static final int S22 = 9;  
  18.   
  19.     static final int S23 = 14;  
  20.   
  21.     static final int S24 = 20;  
  22.   
  23.     static final int S31 = 4;  
  24.   
  25.     static final int S32 = 11;  
  26.   
  27.     static final int S33 = 16;  
  28.   
  29.     static final int S34 = 23;  
  30.   
  31.     static final int S41 = 6;  
  32.   
  33.     static final int S42 = 10;  
  34.   
  35.     static final int S43 = 15;  
  36.   
  37.     static final int S44 = 21;  
  38.   
  39.     static final byte[] PADDING = { -128000000000000,  
  40.             0000000000000000000000,  
  41.             0000000000000000000000,  
  42.             0000000 };  
  43.   
  44.     private long[] state = new long[4];// state (ABCD)  
  45.   
  46.     private long[] count = new long[2];// number of bits, modulo 2^64 (lsb  
  47.   
  48.     // first)  
  49.   
  50.     private byte[] buffer = new byte[64]; // input buffer  
  51.   
  52.   
  53.     public String digestHexStr;  
  54.       
  55.     private byte[] digest = new byte[16];  
  56.   
  57.     public String getMD5ofStr(String inbuf) {  
  58.         md5Init();  
  59.         md5Update(inbuf.getBytes(), inbuf.length());  
  60.         md5Final();  
  61.         digestHexStr = "";  
  62.         for (int i = 0; i < 16; i++) {  
  63.             digestHexStr += byteHEX(digest[i]);  
  64.         }  
  65.         return digestHexStr;  
  66.     }  
  67.   
  68.     public MD5Code() {  
  69.         md5Init();  
  70.         return;  
  71.     }  
  72.   
  73.     private void md5Init() {  
  74.         count[0] = 0L;  
  75.         count[1] = 0L;  
  76.         // /* Load magic initialization constants.  
  77.         state[0] = 0x67452301L;  
  78.         state[1] = 0xefcdab89L;  
  79.         state[2] = 0x98badcfeL;  
  80.         state[3] = 0x10325476L;  
  81.         return;  
  82.     }  
  83.   
  84.     private long F(long x, long y, long z) {  
  85.         return (x & y) | ((~x) & z);  
  86.     }  
  87.   
  88.     private long G(long x, long y, long z) {  
  89.         return (x & z) | (y & (~z));  
  90.     }  
  91.   
  92.     private long H(long x, long y, long z) {  
  93.         return x ^ y ^ z;  
  94.     }  
  95.   
  96.     private long I(long x, long y, long z) {  
  97.         return y ^ (x | (~z));  
  98.     }  
  99.   
  100.     private long FF(long a, long b, long c, long d, long x, long s, long ac) {  
  101.         a += F(b, c, d) + x + ac;  
  102.         a = ((int) a << s) | ((int) a >>> (32 - s));  
  103.         a += b;  
  104.         return a;  
  105.     }  
  106.   
  107.     private long GG(long a, long b, long c, long d, long x, long s, long ac) {  
  108.         a += G(b, c, d) + x + ac;  
  109.         a = ((int) a << s) | ((int) a >>> (32 - s));  
  110.         a += b;  
  111.         return a;  
  112.     }  
  113.   
  114.     private long HH(long a, long b, long c, long d, long x, long s, long ac) {  
  115.         a += H(b, c, d) + x + ac;  
  116.         a = ((int) a << s) | ((int) a >>> (32 - s));  
  117.         a += b;  
  118.         return a;  
  119.     }  
  120.   
  121.     private long II(long a, long b, long c, long d, long x, long s, long ac) {  
  122.         a += I(b, c, d) + x + ac;  
  123.         a = ((int) a << s) | ((int) a >>> (32 - s));  
  124.         a += b;  
  125.         return a;  
  126.     }  
  127.   
  128.     private void md5Update(byte[] inbuf, int inputLen) {  
  129.         int i, index, partLen;  
  130.         byte[] block = new byte[64];  
  131.         index = (int) (count[0] >>> 3) & 0x3F;  
  132.         // /* Update number of bits */  
  133.         if ((count[0] += (inputLen << 3)) < (inputLen << 3))  
  134.             count[1]++;  
  135.         count[1] += (inputLen >>> 29);  
  136.         partLen = 64 - index;  
  137.         // Transform as many times as possible.  
  138.         if (inputLen >= partLen) {  
  139.             md5Memcpy(buffer, inbuf, index, 0, partLen);  
  140.             md5Transform(buffer);  
  141.             for (i = partLen; i + 63 < inputLen; i += 64) {  
  142.                 md5Memcpy(block, inbuf, 0, i, 64);  
  143.                 md5Transform(block);  
  144.             }  
  145.             index = 0;  
  146.         } else  
  147.             i = 0;  
  148.         // /* Buffer remaining input */  
  149.         md5Memcpy(buffer, inbuf, index, i, inputLen - i);  
  150.     }  
  151.   
  152.     private void md5Final() {  
  153.         byte[] bits = new byte[8];  
  154.         int index, padLen;  
  155.         // /* Save number of bits */  
  156.         Encode(bits, count, 8);  
  157.         // /* Pad out to 56 mod 64.  
  158.         index = (int) (count[0] >>> 3) & 0x3f;  
  159.         padLen = (index < 56) ? (56 - index) : (120 - index);  
  160.         md5Update(PADDING, padLen);  
  161.         // /* Append length (before padding) */  
  162.         md5Update(bits, 8);  
  163.         // /* Store state in digest */  
  164.         Encode(digest, state, 16);  
  165.     }  
  166.   
  167.     private void md5Memcpy(byte[] output, byte[] input, int outpos, int inpos,  
  168.             int len) {  
  169.         int i;  
  170.         for (i = 0; i < len; i++)  
  171.             output[outpos + i] = input[inpos + i];  
  172.     }  
  173.   
  174.     private void md5Transform(byte block[]) {  
  175.         long a = state[0], b = state[1], c = state[2], d = state[3];  
  176.         long[] x = new long[16];  
  177.         Decode(x, block, 64);  
  178.         /* Round 1 */  
  179.         a = FF(a, b, c, d, x[0], S11, 0xd76aa478L); /* 1 */  
  180.         d = FF(d, a, b, c, x[1], S12, 0xe8c7b756L); /* 2 */  
  181.         c = FF(c, d, a, b, x[2], S13, 0x242070dbL); /* 3 */  
  182.         b = FF(b, c, d, a, x[3], S14, 0xc1bdceeeL); /* 4 */  
  183.         a = FF(a, b, c, d, x[4], S11, 0xf57c0fafL); /* 5 */  
  184.         d = FF(d, a, b, c, x[5], S12, 0x4787c62aL); /* 6 */  
  185.         c = FF(c, d, a, b, x[6], S13, 0xa8304613L); /* 7 */  
  186.         b = FF(b, c, d, a, x[7], S14, 0xfd469501L); /* 8 */  
  187.         a = FF(a, b, c, d, x[8], S11, 0x698098d8L); /* 9 */  
  188.         d = FF(d, a, b, c, x[9], S12, 0x8b44f7afL); /* 10 */  
  189.         c = FF(c, d, a, b, x[10], S13, 0xffff5bb1L); /* 11 */  
  190.         b = FF(b, c, d, a, x[11], S14, 0x895cd7beL); /* 12 */  
  191.         a = FF(a, b, c, d, x[12], S11, 0x6b901122L); /* 13 */  
  192.         d = FF(d, a, b, c, x[13], S12, 0xfd987193L); /* 14 */  
  193.         c = FF(c, d, a, b, x[14], S13, 0xa679438eL); /* 15 */  
  194.         b = FF(b, c, d, a, x[15], S14, 0x49b40821L); /* 16 */  
  195.         /* Round 2 */  
  196.         a = GG(a, b, c, d, x[1], S21, 0xf61e2562L); /* 17 */  
  197.         d = GG(d, a, b, c, x[6], S22, 0xc040b340L); /* 18 */  
  198.         c = GG(c, d, a, b, x[11], S23, 0x265e5a51L); /* 19 */  
  199.         b = GG(b, c, d, a, x[0], S24, 0xe9b6c7aaL); /* 20 */  
  200.         a = GG(a, b, c, d, x[5], S21, 0xd62f105dL); /* 21 */  
  201.         d = GG(d, a, b, c, x[10], S22, 0x2441453L); /* 22 */  
  202.         c = GG(c, d, a, b, x[15], S23, 0xd8a1e681L); /* 23 */  
  203.         b = GG(b, c, d, a, x[4], S24, 0xe7d3fbc8L); /* 24 */  
  204.         a = GG(a, b, c, d, x[9], S21, 0x21e1cde6L); /* 25 */  
  205.         d = GG(d, a, b, c, x[14], S22, 0xc33707d6L); /* 26 */  
  206.         c = GG(c, d, a, b, x[3], S23, 0xf4d50d87L); /* 27 */  
  207.         b = GG(b, c, d, a, x[8], S24, 0x455a14edL); /* 28 */  
  208.         a = GG(a, b, c, d, x[13], S21, 0xa9e3e905L); /* 29 */  
  209.         d = GG(d, a, b, c, x[2], S22, 0xfcefa3f8L); /* 30 */  
  210.         c = GG(c, d, a, b, x[7], S23, 0x676f02d9L); /* 31 */  
  211.         b = GG(b, c, d, a, x[12], S24, 0x8d2a4c8aL); /* 32 */  
  212.         /* Round 3 */  
  213.         a = HH(a, b, c, d, x[5], S31, 0xfffa3942L); /* 33 */  
  214.         d = HH(d, a, b, c, x[8], S32, 0x8771f681L); /* 34 */  
  215.         c = HH(c, d, a, b, x[11], S33, 0x6d9d6122L); /* 35 */  
  216.         b = HH(b, c, d, a, x[14], S34, 0xfde5380cL); /* 36 */  
  217.         a = HH(a, b, c, d, x[1], S31, 0xa4beea44L); /* 37 */  
  218.         d = HH(d, a, b, c, x[4], S32, 0x4bdecfa9L); /* 38 */  
  219.         c = HH(c, d, a, b, x[7], S33, 0xf6bb4b60L); /* 39 */  
  220.         b = HH(b, c, d, a, x[10], S34, 0xbebfbc70L); /* 40 */  
  221.         a = HH(a, b, c, d, x[13], S31, 0x289b7ec6L); /* 41 */  
  222.         d = HH(d, a, b, c, x[0], S32, 0xeaa127faL); /* 42 */  
  223.         c = HH(c, d, a, b, x[3], S33, 0xd4ef3085L); /* 43 */  
  224.         b = HH(b, c, d, a, x[6], S34, 0x4881d05L); /* 44 */  
  225.         a = HH(a, b, c, d, x[9], S31, 0xd9d4d039L); /* 45 */  
  226.         d = HH(d, a, b, c, x[12], S32, 0xe6db99e5L); /* 46 */  
  227.         c = HH(c, d, a, b, x[15], S33, 0x1fa27cf8L); /* 47 */  
  228.         b = HH(b, c, d, a, x[2], S34, 0xc4ac5665L); /* 48 */  
  229.         /* Round 4 */  
  230.         a = II(a, b, c, d, x[0], S41, 0xf4292244L); /* 49 */  
  231.         d = II(d, a, b, c, x[7], S42, 0x432aff97L); /* 50 */  
  232.         c = II(c, d, a, b, x[14], S43, 0xab9423a7L); /* 51 */  
  233.         b = II(b, c, d, a, x[5], S44, 0xfc93a039L); /* 52 */  
  234.         a = II(a, b, c, d, x[12], S41, 0x655b59c3L); /* 53 */  
  235.         d = II(d, a, b, c, x[3], S42, 0x8f0ccc92L); /* 54 */  
  236.         c = II(c, d, a, b, x[10], S43, 0xffeff47dL); /* 55 */  
  237.         b = II(b, c, d, a, x[1], S44, 0x85845dd1L); /* 56 */  
  238.         a = II(a, b, c, d, x[8], S41, 0x6fa87e4fL); /* 57 */  
  239.         d = II(d, a, b, c, x[15], S42, 0xfe2ce6e0L); /* 58 */  
  240.         c = II(c, d, a, b, x[6], S43, 0xa3014314L); /* 59 */  
  241.         b = II(b, c, d, a, x[13], S44, 0x4e0811a1L); /* 60 */  
  242.         a = II(a, b, c, d, x[4], S41, 0xf7537e82L); /* 61 */  
  243.         d = II(d, a, b, c, x[11], S42, 0xbd3af235L); /* 62 */  
  244.         c = II(c, d, a, b, x[2], S43, 0x2ad7d2bbL); /* 63 */  
  245.         b = II(b, c, d, a, x[9], S44, 0xeb86d391L); /* 64 */  
  246.         state[0] += a;  
  247.         state[1] += b;  
  248.         state[2] += c;  
  249.         state[3] += d;  
  250.     }  
  251.   
  252.     private void Encode(byte[] output, long[] input, int len) {  
  253.         int i, j;  
  254.         for (i = 0, j = 0; j < len; i++, j += 4) {  
  255.             output[j] = (byte) (input[i] & 0xffL);  
  256.             output[j + 1] = (byte) ((input[i] >>> 8) & 0xffL);  
  257.             output[j + 2] = (byte) ((input[i] >>> 16) & 0xffL);  
  258.             output[j + 3] = (byte) ((input[i] >>> 24) & 0xffL);  
  259.         }  
  260.     }  
  261.   
  262.     private void Decode(long[] output, byte[] input, int len) {  
  263.         int i, j;  
  264.         for (i = 0, j = 0; j < len; i++, j += 4)  
  265.             output[i] = b2iu(input[j]) | (b2iu(input[j + 1]) << 8)  
  266.                     | (b2iu(input[j + 2]) << 16) | (b2iu(input[j + 3]) << 24);  
  267.         return;  
  268.     }  
  269.   
  270.     public static long b2iu(byte b) {  
  271.         return b < 0 ? b & 0x7F + 128 : b;  
  272.     }  
  273.       
  274.     public static String byteHEX(byte ib) {  
  275.         char[] Digit = { '0''1''2''3''4''5''6''7''8''9''A',  
  276.                 'B''C''D''E''F' };  
  277.         char[] ob = new char[2];  
  278.         ob[0] = Digit[(ib >>> 4) & 0X0F];  
  279.         ob[1] = Digit[ib & 0X0F];  
  280.         String s = new String(ob);  
  281.         return s;  
  282.     }  
  283. }  


 

读取Config文件工具类 PropertiesConfig.java

[java] view plaincopy
  1. package com.util;  
  2.   
  3. import java.io.BufferedInputStream;  
  4. import java.io.FileInputStream;  
  5. import java.io.InputStream;  
  6. import java.util.Properties;  
  7. /** 
  8.  * 读取Config文件工具类 
  9.  * @version 1.0 
  10.  * @since JDK 1.6 
  11.  */  
  12. public class PropertiesConfig {    
  13.         
  14.     /**  
  15.      * 获取整个配置文件中的属性 
  16.      * @param filePath 文件路径,即文件所在包的路径,例如:java/util/config.properties  
  17.      */    
  18.     public static Properties readData(String filePath) {    
  19.         filePath = getRealPath(filePath);  
  20.         Properties props = new Properties();    
  21.         try {    
  22.             InputStream in = new BufferedInputStream(new FileInputStream(filePath));    
  23.             props.load(in);    
  24.             in.close();    
  25.             return props;    
  26.         } catch (Exception e) {    
  27.             e.printStackTrace();    
  28.             return null;    
  29.         }    
  30.     }    
  31.       
  32.     private static String getRealPath(String filePath) {  
  33.         //获取绝对路径 并截掉路径的”file:/“前缀    
  34.         return PropertiesConfig.class.getResource("/" + filePath).toString().substring(6);  
  35.     }  
  36. }    
[java] view plaincopy
  1. package com.util;  
  2.   
  3. import java.io.BufferedInputStream;  
  4. import java.io.FileInputStream;  
  5. import java.io.InputStream;  
  6. import java.util.Properties;  
  7. /** 
  8.  * 读取Config文件工具类 
  9.  * @version 1.0 
  10.  * @since JDK 1.6 
  11.  */  
  12. public class PropertiesConfig {    
  13.         
  14.     /**  
  15.      * 获取整个配置文件中的属性 
  16.      * @param filePath 文件路径,即文件所在包的路径,例如:java/util/config.properties  
  17.      */    
  18.     public static Properties readData(String filePath) {    
  19.         filePath = getRealPath(filePath);  
  20.         Properties props = new Properties();    
  21.         try {    
  22.             InputStream in = new BufferedInputStream(new FileInputStream(filePath));    
  23.             props.load(in);    
  24.             in.close();    
  25.             return props;    
  26.         } catch (Exception e) {    
  27.             e.printStackTrace();    
  28.             return null;    
  29.         }    
  30.     }    
  31.       
  32.     private static String getRealPath(String filePath) {  
  33.         //获取绝对路径 并截掉路径的”file:/“前缀    
  34.         return PropertiesConfig.class.getResource("/" + filePath).toString().substring(6);  
  35.     }  
  36. }    

 

自动扫描FTP文件工具类 ScanFtp.java

[java] view plaincopy
  1. package com.util;  
  2.   
  3. import java.io.BufferedInputStream;  
  4. import java.io.BufferedOutputStream;  
  5. import java.io.File;  
  6. import java.io.FileInputStream;  
  7. import java.io.FileOutputStream;  
  8. import java.io.IOException;  
  9.   
  10. /** 
  11.  * 自动扫描FTP文件工具类 
  12.  * 需要定时执行 
  13.  */  
  14. public class ScanFtp {  
  15.     //服务器图片路径文件夹  
  16.     private String serverLocal = "D:/TOOLS/Tomcat 6.0/webapps/BCCCSM/modelforcast/";  
  17.     //图片上传文件夹存放路径,文件夹内应包含AGCM CSM ZS 3个子文件夹分别存放需要扫描到tomcat中的图片  
  18.     private String saveLocal = "D:/modelForcast/";  
  19.     /** 
  20.      * 获得远程权限 
  21.      * @return 
  22.      */  
  23.     private void getFTPAdress(){  
  24.         //登陆成功  
  25.     }  
  26.       
  27.     /** 
  28.      * 开始扫描 
  29.      * @throws IOException  
  30.      */  
  31.     private void scan() throws IOException {  
  32.         this.getFTPAdress();  
  33.         File file = new File(saveLocal + "AGCM");  //打开AGCM  
  34.         File[] array = file.listFiles();  
  35.         String fileName;  
  36.         File fileTemp;  
  37.         for(int i = 0; i < array.length; i++){  
  38.             if(array[i].isFile()) {  
  39.                 fileTemp = array[i];  
  40.                 fileName = fileTemp.getName();//取出文件名  
  41.                 if (!fileName.equals("humbs.db")) {  
  42.                     this.saveFile(fileTemp, 1);//分析每一个文件名字并存储  
  43.                     System.out.println(fileName + " saved");  
  44.                 }  
  45.             }     
  46.         }  
  47.           
  48.         file = new File(saveLocal + "CSM");  //打开CSM  
  49.         array = file.listFiles();  
  50.         for(int i = 0; i < array.length; i++){  
  51.             if(array[i].isFile()) {  
  52.                 fileTemp = array[i];  
  53.                 fileName = fileTemp.getName();//取出文件名  
  54.                 if (!fileName.equals("humbs.db")) {  
  55.                     this.saveFile(fileTemp, 2);//分析每一个文件名字并存储  
  56.                     System.out.println(fileName + " saved");  
  57.                 }  
  58.             }     
  59.         }  
  60.           
  61.         file = new File(saveLocal + "ZS");  //打开ZS  
  62.         array = file.listFiles();  
  63.         for(int i = 0; i < array.length; i++){  
  64.             if(array[i].isFile()) {  
  65.                 fileTemp = array[i];  
  66.                 fileName = fileTemp.getName();//取出文件名  
  67.                 if (!fileName.equals("humbs.db")) {  
  68.                     this.saveFile(fileTemp, 3);//分析每一个文件名字并存储  
  69.                     System.out.println(fileName + " saved");  
  70.                 }  
  71.             }     
  72.         }  
  73.           
  74.   
  75.     }  
  76.       
  77.     /** 
  78.      * 开始执行 
  79.      * @throws IOException  
  80.      */  
  81.     public void execute() throws IOException{  
  82.         scan();//开始扫描  
  83.     }  
  84.       
  85.     /** 
  86.      * 按类型存储 
  87.      * @param file 
  88.      * @param type 
  89.      * @throws IOException  
  90.      */  
  91.     private void saveFile(File file, int type) throws IOException {  
  92.         String fileName = file.getName();  
  93.         //类型A C 和 指数3种  
  94.         String year = fileName.substring(15);//获得发布年份  
  95.         String date = fileName.substring(59);//获得发布日期包含月日  
  96.         String var = null;//获得变量名字  
  97.         String dir = serverLocal;//存储目录名字  
  98.         if (type == 1 ) {  
  99.             var = fileName.substring(1115);  
  100.             dir = dir + "AGCM/" + var + "/" + year + "/" + date;  
  101.         } else if(type == 2) {  
  102.             var = fileName.substring(1115);  
  103.             dir = dir + "CSM/" + var + "/" + year + "/" + date;  
  104.         } else {  
  105.             var = fileName.substring(1115);//指数的暂时没处理  
  106.             dir = dir + "ZS/" + var + "/" + year + "/" + date;  
  107.         }  
  108.         //判断是否存在这样的目录没有就自动创建  
  109.         File savePath = new File(dir);  
  110.         if(!savePath.exists()) {  
  111.             savePath.mkdirs();  
  112.         }  
  113.         File saveFile = new File(dir + "/" + fileName);  
  114.         if(!saveFile.exists()){//如果不存在,就存文件  
  115.             FileInputStream fis = null;//这里用本地复制暂时代替FTP  
  116.             FileOutputStream fos =null;  
  117.             BufferedInputStream bis =null;  
  118.             BufferedOutputStream bos =null;    
  119.             int c;  
  120.             fis = new FileInputStream(file);  
  121.             bis = new BufferedInputStream(fis);  
  122.             fos = new FileOutputStream(dir + "/" + fileName);  
  123.             bos = new BufferedOutputStream(fos);  
  124.             while((c = bis.read())!= -1)  
  125.                 bos.write(c);  
  126.             bos.flush();  
  127.             if(bos != null) bos.close();  
  128.             if(bis != null) bis.close();  
  129.             if(fos != null) fos.close();  
  130.             if(fis != null) fos.close();  
  131.         } else {  
  132.             System.out.println("文件已经存在,不进行存储,可清理当前文件.");  
  133.         }  
  134.     }  
  135.       
  136.       
  137.     /** 
  138.      * 测试方法 
  139.      * @param argv 
  140.      * @throws IOException  
  141.      */  
  142.     public static void main(String argv[])  {  
  143.         ScanFtp s = new ScanFtp();  
  144.         try {  
  145.             s.scan();  
  146.         } catch (IOException e) {  
  147.             // TODO Auto-generated catch block  
  148.             e.printStackTrace();  
  149.         }  
  150.     }  
  151. }  
[java] view plaincopy
  1. package com.util;  
  2.   
  3. import java.io.BufferedInputStream;  
  4. import java.io.BufferedOutputStream;  
  5. import java.io.File;  
  6. import java.io.FileInputStream;  
  7. import java.io.FileOutputStream;  
  8. import java.io.IOException;  
  9.   
  10. /** 
  11.  * 自动扫描FTP文件工具类 
  12.  * 需要定时执行 
  13.  */  
  14. public class ScanFtp {  
  15.     //服务器图片路径文件夹  
  16.     private String serverLocal = "D:/TOOLS/Tomcat 6.0/webapps/BCCCSM/modelforcast/";  
  17.     //图片上传文件夹存放路径,文件夹内应包含AGCM CSM ZS 3个子文件夹分别存放需要扫描到tomcat中的图片  
  18.     private String saveLocal = "D:/modelForcast/";  
  19.     /** 
  20.      * 获得远程权限 
  21.      * @return 
  22.      */  
  23.     private void getFTPAdress(){  
  24.         //登陆成功  
  25.     }  
  26.       
  27.     /** 
  28.      * 开始扫描 
  29.      * @throws IOException  
  30.      */  
  31.     private void scan() throws IOException {  
  32.         this.getFTPAdress();  
  33.         File file = new File(saveLocal + "AGCM");  //打开AGCM  
  34.         File[] array = file.listFiles();  
  35.         String fileName;  
  36.         File fileTemp;  
  37.         for(int i = 0; i < array.length; i++){  
  38.             if(array[i].isFile()) {  
  39.                 fileTemp = array[i];  
  40.                 fileName = fileTemp.getName();//取出文件名  
  41.                 if (!fileName.equals("humbs.db")) {  
  42.                     this.saveFile(fileTemp, 1);//分析每一个文件名字并存储  
  43.                     System.out.println(fileName + " saved");  
  44.                 }  
  45.             }     
  46.         }  
  47.           
  48.         file = new File(saveLocal + "CSM");  //打开CSM  
  49.         array = file.listFiles();  
  50.         for(int i = 0; i < array.length; i++){  
  51.             if(array[i].isFile()) {  
  52.                 fileTemp = array[i];  
  53.                 fileName = fileTemp.getName();//取出文件名  
  54.                 if (!fileName.equals("humbs.db")) {  
  55.                     this.saveFile(fileTemp, 2);//分析每一个文件名字并存储  
  56.                     System.out.println(fileName + " saved");  
  57.                 }  
  58.             }     
  59.         }  
  60.           
  61.         file = new File(saveLocal + "ZS");  //打开ZS  
  62.         array = file.listFiles();  
  63.         for(int i = 0; i < array.length; i++){  
  64.             if(array[i].isFile()) {  
  65.                 fileTemp = array[i];  
  66.                 fileName = fileTemp.getName();//取出文件名  
  67.                 if (!fileName.equals("humbs.db")) {  
  68.                     this.saveFile(fileTemp, 3);//分析每一个文件名字并存储  
  69.                     System.out.println(fileName + " saved");  
  70.                 }  
  71.             }     
  72.         }  
  73.           
  74.   
  75.     }  
  76.       
  77.     /** 
  78.      * 开始执行 
  79.      * @throws IOException  
  80.      */  
  81.     public void execute() throws IOException{  
  82.         scan();//开始扫描  
  83.     }  
  84.       
  85.     /** 
  86.      * 按类型存储 
  87.      * @param file 
  88.      * @param type 
  89.      * @throws IOException  
  90.      */  
  91.     private void saveFile(File file, int type) throws IOException {  
  92.         String fileName = file.getName();  
  93.         //类型A C 和 指数3种  
  94.         String year = fileName.substring(15);//获得发布年份  
  95.         String date = fileName.substring(59);//获得发布日期包含月日  
  96.         String var = null;//获得变量名字  
  97.         String dir = serverLocal;//存储目录名字  
  98.         if (type == 1 ) {  
  99.             var = fileName.substring(1115);  
  100.             dir = dir + "AGCM/" + var + "/" + year + "/" + date;  
  101.         } else if(type == 2) {  
  102.             var = fileName.substring(1115);  
  103.             dir = dir + "CSM/" + var + "/" + year + "/" + date;  
  104.         } else {  
  105.             var = fileName.substring(1115);//指数的暂时没处理  
  106.             dir = dir + "ZS/" + var + "/" + year + "/" + date;  
  107.         }  
  108.         //判断是否存在这样的目录没有就自动创建  
  109.         File savePath = new File(dir);  
  110.         if(!savePath.exists()) {  
  111.             savePath.mkdirs();  
  112.         }  
  113.         File saveFile = new File(dir + "/" + fileName);  
  114.         if(!saveFile.exists()){//如果不存在,就存文件  
  115.             FileInputStream fis = null;//这里用本地复制暂时代替FTP  
  116.             FileOutputStream fos =null;  
  117.             BufferedInputStream bis =null;  
  118.             BufferedOutputStream bos =null;    
  119.             int c;  
  120.             fis = new FileInputStream(file);  
  121.             bis = new BufferedInputStream(fis);  
  122.             fos = new FileOutputStream(dir + "/" + fileName);  
  123.             bos = new BufferedOutputStream(fos);  
  124.             while((c = bis.read())!= -1)  
  125.                 bos.write(c);  
  126.             bos.flush();  
  127.             if(bos != null) bos.close();  
  128.             if(bis != null) bis.close();  
  129.             if(fos != null) fos.close();  
  130.             if(fis != null) fos.close();  
  131.         } else {  
  132.             System.out.println("文件已经存在,不进行存储,可清理当前文件.");  
  133.         }  
  134.     }  
  135.       
  136.       
  137.     /** 
  138.      * 测试方法 
  139.      * @param argv 
  140.      * @throws IOException  
  141.      */  
  142.     public static void main(String argv[])  {  
  143.         ScanFtp s = new ScanFtp();  
  144.         try {  
  145.             s.scan();  
  146.         } catch (IOException e) {  
  147.             // TODO Auto-generated catch block  
  148.             e.printStackTrace();  
  149.         }  
  150.     }  
  151. }  

 

邮件发送工具类 SendMail.java

[java] view plaincopy
  1. package com.util;  
  2.   
  3. import org.apache.commons.mail.EmailException;  
  4. import org.apache.commons.mail.SimpleEmail;  
  5.   
  6. /** 
  7.  * 邮件发送工具类 
  8.  */  
  9. public class SendMail {  
  10.     private String hostName;//设置smtp服务器  
  11.     private String sendMailAddress;//设置发送地址  
  12.     private String mailPassword;//设置密码  
  13.     private boolean TLS = false;//设置是否需要TLS登录  
  14.     private String[] getMailAddress;//设置接收地址s  
  15.     private String mailTitle;//设置标题  
  16.     private String mailContent;//设置邮件内容  
  17.   
  18.     public  void  send(){  
  19.         SimpleEmail email = new SimpleEmail();  
  20.         email.setTLS(TLS); //是否TLS校验,,某些邮箱需要TLS安全校验,同理有SSL校验    
  21.         email.setHostName(hostName);  
  22.         try {  
  23.             email.setFrom(sendMailAddress, sendMailAddress);  
  24.             email.setAuthentication(sendMailAddress, mailPassword);  
  25.             email.setCharset("utf-8");//解决中文乱码问题  
  26.             email.setSubject(mailTitle); //标题         
  27.             email.setMsg(mailContent);//内容    
  28.             for(int i = 0; i < getMailAddress.length; ++i){  
  29.                 email.addTo(getMailAddress[i]); //接收方  
  30.                 email.send();  
  31.             }  
  32.                   
  33.               
  34.         } catch (EmailException e) {  
  35.         //  e.printStackTrace();  
  36.         }  
  37.     }  
  38.   
  39.     public String getHostName() {  
  40.         return hostName;  
  41.     }  
  42.   
  43.     public void setHostName(String hostName) {  
  44.         this.hostName = hostName;  
  45.     }  
  46.   
  47.     public String getSendMailAddress() {  
  48.         return sendMailAddress;  
  49.     }  
  50.   
  51.     public void setSendMailAddress(String sendMailAddress) {  
  52.         this.sendMailAddress = sendMailAddress;  
  53.     }  
  54.   
  55.     public String getMailPassword() {  
  56.         return mailPassword;  
  57.     }  
  58.   
  59.     public void setMailPassword(String mailPassword) {  
  60.         this.mailPassword = mailPassword;  
  61.     }  
  62.   
  63.     public boolean isTLS() {  
  64.         return TLS;  
  65.     }  
  66.   
  67.     public void setTLS(boolean tls) {  
  68.         TLS = tls;  
  69.     }  
  70.   
  71.     public String[] getGetMailAddress() {  
  72.         return getMailAddress;  
  73.     }  
  74.   
  75.     public void setGetMailAddress(String[] getMailAddress) {  
  76.         this.getMailAddress = getMailAddress;  
  77.     }  
  78.   
  79.     public String getMailTitle() {  
  80.         return mailTitle;  
  81.     }  
  82.   
  83.     public void setMailTitle(String mailTitle) {  
  84.         this.mailTitle = mailTitle;  
  85.     }  
  86.   
  87.     public String getMailContent() {  
  88.         return mailContent;  
  89.     }  
  90.   
  91.     public void setMailContent(String mailContent) {  
  92.         this.mailContent = mailContent;  
  93.     }  
  94. }  
[java] view plaincopy
  1. package com.util;  
  2.   
  3. import org.apache.commons.mail.EmailException;  
  4. import org.apache.commons.mail.SimpleEmail;  
  5.   
  6. /** 
  7.  * 邮件发送工具类 
  8.  */  
  9. public class SendMail {  
  10.     private String hostName;//设置smtp服务器  
  11.     private String sendMailAddress;//设置发送地址  
  12.     private String mailPassword;//设置密码  
  13.     private boolean TLS = false;//设置是否需要TLS登录  
  14.     private String[] getMailAddress;//设置接收地址s  
  15.     private String mailTitle;//设置标题  
  16.     private String mailContent;//设置邮件内容  
  17.   
  18.     public  void  send(){  
  19.         SimpleEmail email = new SimpleEmail();  
  20.         email.setTLS(TLS); //是否TLS校验,,某些邮箱需要TLS安全校验,同理有SSL校验    
  21.         email.setHostName(hostName);  
  22.         try {  
  23.             email.setFrom(sendMailAddress, sendMailAddress);  
  24.             email.setAuthentication(sendMailAddress, mailPassword);  
  25.             email.setCharset("utf-8");//解决中文乱码问题  
  26.             email.setSubject(mailTitle); //标题         
  27.             email.setMsg(mailContent);//内容    
  28.             for(int i = 0; i < getMailAddress.length; ++i){  
  29.                 email.addTo(getMailAddress[i]); //接收方  
  30.                 email.send();  
  31.             }  
  32.                   
  33.               
  34.         } catch (EmailException e) {  
  35.         //  e.printStackTrace();  
  36.         }  
  37.     }  
  38.   
  39.     public String getHostName() {  
  40.         return hostName;  
  41.     }  
  42.   
  43.     public void setHostName(String hostName) {  
  44.         this.hostName = hostName;  
  45.     }  
  46.   
  47.     public String getSendMailAddress() {  
  48.         return sendMailAddress;  
  49.     }  
  50.   
  51.     public void setSendMailAddress(String sendMailAddress) {  
  52.         this.sendMailAddress = sendMailAddress;  
  53.     }  
  54.   
  55.     public String getMailPassword() {  
  56.         return mailPassword;  
  57.     }  
  58.   
  59.     public void setMailPassword(String mailPassword) {  
  60.         this.mailPassword = mailPassword;  
  61.     }  
  62.   
  63.     public boolean isTLS() {  
  64.         return TLS;  
  65.     }  
  66.   
  67.     public void setTLS(boolean tls) {  
  68.         TLS = tls;  
  69.     }  
  70.   
  71.     public String[] getGetMailAddress() {  
  72.         return getMailAddress;  
  73.     }  
  74.   
  75.     public void setGetMailAddress(String[] getMailAddress) {  
  76.         this.getMailAddress = getMailAddress;  
  77.     }  
  78.   
  79.     public String getMailTitle() {  
  80.         return mailTitle;  
  81.     }  
  82.   
  83.     public void setMailTitle(String mailTitle) {  
  84.         this.mailTitle = mailTitle;  
  85.     }  
  86.   
  87.     public String getMailContent() {  
  88.         return mailContent;  
  89.     }  
  90.   
  91.     public void setMailContent(String mailContent) {  
  92.         this.mailContent = mailContent;  
  93.     }  
  94. }  

 

分页工具类 SharePager.java

[java] view plaincopy
  1. package com.util;  
  2.   
  3.   
  4. /** 
  5.  * 分页工具类 
  6.  * 
  7.  */  
  8. public class SharePager {  
  9.     private int totalRows; //总行数  
  10.     private int pageSize = 20//每页显示的行数    
  11.     private int currentPage; //当前页号  
  12.     private int totalPages; //总页数   
  13.     private int startRow; //当前页在数据库中的起始行    
  14.      
  15.   
  16.     /** 
  17.      * 默认构造函数 
  18.      */  
  19.     public SharePager()   
  20.     {    
  21.           
  22.     }    
  23.         
  24.     /**默认每页10行 
  25.      * @param totalRows  
  26.      */    
  27.     public SharePager(int totalRows)   
  28.     {    
  29.         this.totalRows = totalRows;    
  30.   
  31.         totalPages =(int) Math.ceil((double)totalRows / (double)pageSize);    
  32.         startRow = 0;    
  33.     }    
  34.         
  35.         
  36.     /**可自定义每页显示多少页 
  37.      * @param totalRows  
  38.      * @param pageSize  
  39.      */    
  40.     public SharePager(int totalRows, int pageSize)   
  41.     {    
  42.         this.totalRows = totalRows;    
  43.         this.pageSize = pageSize;   
  44.         if(this.pageSize<1)                 
  45.             this.pageSize=1;  
  46.         else if(pageSize>20)  
  47.             this.pageSize=20;  
  48.   
  49. //        if(this.pageSize>totalRows){  
  50. //          this.pageSize=(int)totalRows;  
  51. //        }  
  52.           
  53.       
  54.   
  55.         totalPages =(int) Math.ceil((double)totalRows / (double)this.pageSize);     
  56.         currentPage = 1;    
  57.         startRow = 0;    
  58.     }    
  59.         
  60.     /** 
  61.      * 跳转到首页 
  62.      */  
  63.     public void first()   
  64.     {    
  65.         this.currentPage = 1;    
  66.         this.startRow = 0;   
  67.     }    
  68.       
  69.     /** 
  70.      * 跳转到上一页 
  71.      */  
  72.     public void previous()   
  73.     {    
  74.         if (currentPage == 1)   
  75.         {    
  76.             return;    
  77.         }    
  78.         currentPage--;    
  79.         startRow = (currentPage-1) * pageSize;    
  80.    }    
  81.       
  82.     /** 
  83.      * 跳转到下一页 
  84.      */  
  85.     public void next()   
  86.     {    
  87.         if (currentPage < totalPages)  
  88.         {    
  89.             currentPage++;    
  90.         }    
  91.         startRow = (currentPage-1) * pageSize;    
  92.     }    
  93.       
  94.     /** 
  95.      *  跳转到尾页 
  96.      */  
  97.     public void last()   
  98.     {    
  99.         this.currentPage = totalPages;    
  100.         if(currentPage<1){  
  101.             currentPage = 1;  
  102.         }  
  103.         this.startRow = (currentPage-1) * this.pageSize;  
  104.         totalPages =(int) Math.ceil((double)totalRows / (double)this.pageSize);     
  105.           
  106.     }    
  107.       
  108.     /** 
  109.      * 跳转到指定页 
  110.      * @param currentPage   指定的页 
  111.      */  
  112.     public void refresh(int currentPage)   
  113.     {    
  114.           
  115.         if(currentPage < 0)  
  116.         {  
  117.             first();  
  118.         }  
  119.         if (currentPage > totalPages)   
  120.         {    
  121.             last();    
  122.         }else{  
  123.             this.currentPage = currentPage;  
  124.             this.startRow = (currentPage-1) * this.pageSize;  
  125.           }  
  126.    
  127.     }    
  128.        
  129.         
  130.     public int getStartRow()  
  131.     {    
  132.         return startRow;    
  133.     }    
  134.       
  135.     public int getTotalPages()  
  136.     {    
  137.         return totalPages;    
  138.     }    
  139.       
  140.     public int getCurrentPage()  
  141.     {    
  142.         return currentPage;    
  143.     }    
  144.       
  145.     public int getPageSize()   
  146.     {    
  147.         return pageSize;    
  148.     }    
  149.       
  150.     public void setTotalRows(int totalRows)   
  151.     {    
  152.         this.totalRows = totalRows;    
  153.     }    
  154.       
  155.     public void setStartRow(int startRow)  
  156.     {    
  157.         this.startRow = startRow;    
  158.     }    
  159.       
  160.     public void setTotalPages(int totalPages)   
  161.     {    
  162.         this.totalPages = totalPages;    
  163.     }    
  164.       
  165.     public void setCurrentPage(int currentPage)   
  166.     {    
  167.         this.currentPage = currentPage;    
  168.     }   
  169.       
  170.     public void setPageSize(int pageSize)   
  171.     {    
  172.         this.pageSize = pageSize;    
  173.     }    
  174.       
  175.     public int getTotalRows()   
  176.     {    
  177.         return totalRows;    
  178.     }    
  179. }  
[java] view plaincopy
  1. package com.util;  
  2.   
  3.   
  4. /** 
  5.  * 分页工具类 
  6.  * 
  7.  */  
  8. public class SharePager {  
  9.     private int totalRows; //总行数  
  10.     private int pageSize = 20//每页显示的行数    
  11.     private int currentPage; //当前页号  
  12.     private int totalPages; //总页数   
  13.     private int startRow; //当前页在数据库中的起始行    
  14.      
  15.   
  16.     /** 
  17.      * 默认构造函数 
  18.      */  
  19.     public SharePager()   
  20.     {    
  21.           
  22.     }    
  23.         
  24.     /**默认每页10行 
  25.      * @param totalRows  
  26.      */    
  27.     public SharePager(int totalRows)   
  28.     {    
  29.         this.totalRows = totalRows;    
  30.   
  31.         totalPages =(int) Math.ceil((double)totalRows / (double)pageSize);    
  32.         startRow = 0;    
  33.     }    
  34.         
  35.         
  36.     /**可自定义每页显示多少页 
  37.      * @param totalRows  
  38.      * @param pageSize  
  39.      */    
  40.     public SharePager(int totalRows, int pageSize)   
  41.     {    
  42.         this.totalRows = totalRows;    
  43.         this.pageSize = pageSize;   
  44.         if(this.pageSize<1)                 
  45.             this.pageSize=1;  
  46.         else if(pageSize>20)  
  47.             this.pageSize=20;  
  48.   
  49. //        if(this.pageSize>totalRows){  
  50. //          this.pageSize=(int)totalRows;  
  51. //        }  
  52.           
  53.       
  54.   
  55.         totalPages =(int) Math.ceil((double)totalRows / (double)this.pageSize);     
  56.         currentPage = 1;    
  57.         startRow = 0;    
  58.     }    
  59.         
  60.     /** 
  61.      * 跳转到首页 
  62.      */  
  63.     public void first()   
  64.     {    
  65.         this.currentPage = 1;    
  66.         this.startRow = 0;   
  67.     }    
  68.       
  69.     /** 
  70.      * 跳转到上一页 
  71.      */  
  72.     public void previous()   
  73.     {    
  74.         if (currentPage == 1)   
  75.         {    
  76.             return;    
  77.         }    
  78.         currentPage--;    
  79.         startRow = (currentPage-1) * pageSize;    
  80.    }    
  81.       
  82.     /** 
  83.      * 跳转到下一页 
  84.      */  
  85.     public void next()   
  86.     {    
  87.         if (currentPage < totalPages)  
  88.         {    
  89.             currentPage++;    
  90.         }    
  91.         startRow = (currentPage-1) * pageSize;    
  92.     }    
  93.       
  94.     /** 
  95.      *  跳转到尾页 
  96.      */  
  97.     public void last()   
  98.     {    
  99.         this.currentPage = totalPages;    
  100.         if(currentPage<1){  
  101.             currentPage = 1;  
  102.         }  
  103.         this.startRow = (currentPage-1) * this.pageSize;  
  104.         totalPages =(int) Math.ceil((double)totalRows / (double)this.pageSize);     
  105.           
  106.     }    
  107.       
  108.     /** 
  109.      * 跳转到指定页 
  110.      * @param currentPage   指定的页 
  111.      */  
  112.     public void refresh(int currentPage)   
  113.     {    
  114.           
  115.         if(currentPage < 0)  
  116.         {  
  117.             first();  
  118.         }  
  119.         if (currentPage > totalPages)   
  120.         {    
  121.             last();    
  122.         }else{  
  123.             this.currentPage = currentPage;  
  124.             this.startRow = (currentPage-1) * this.pageSize;  
  125.           }  
  126.    
  127.     }    
  128.        
  129.         
  130.     public int getStartRow()  
  131.     {    
  132.         return startRow;    
  133.     }    
  134.       
  135.     public int getTotalPages()  
  136.     {    
  137.         return totalPages;    
  138.     }    
  139.       
  140.     public int getCurrentPage()  
  141.     {    
  142.         return currentPage;    
  143.     }    
  144.       
  145.     public int getPageSize()   
  146.     {    
  147.         return pageSize;    
  148.     }    
  149.       
  150.     public void setTotalRows(int totalRows)   
  151.     {    
  152.         this.totalRows = totalRows;    
  153.     }    
  154.       
  155.     public void setStartRow(int startRow)  
  156.     {    
  157.         this.startRow = startRow;    
  158.     }    
  159.       
  160.     public void setTotalPages(int totalPages)   
  161.     {    
  162.         this.totalPages = totalPages;    
  163.     }    
  164.       
  165.     public void setCurrentPage(int currentPage)   
  166.     {    
  167.         this.currentPage = currentPage;    
  168.     }   
  169.       
  170.     public void setPageSize(int pageSize)   
  171.     {    
  172.         this.pageSize = pageSize;    
  173.     }    
  174.       
  175.     public int getTotalRows()   
  176.     {    
  177.         return totalRows;    
  178.     }    

分享到:
评论

相关推荐

    安卓开发框架工具类相关-Android快速开发系列10个常用工具类.rar

    【标题】"安卓开发框架工具类相关-Android快速开发系列10个常用工具类.rar" 涉及的是Android应用程序开发中的一个关键方面——工具类的集合。在Android开发中,工具类通常包含一系列静态方法,用于执行常见的、重复...

    编程——Java

    标题“编程——Java”指出了本文主要讨论的主题是Java编程。Java作为一种流行的编程语言,它有着广泛的应用和深厚的社区支持。本文档的内容介绍了Java编程的基础知识,特别是对于初学者来说,入门时需要掌握的关键...

    广州软件园实习报告——java实习

    在“广州软件园实习报告——java实习”这个项目中,我们可以深入探讨实习生在软件开发领域,特别是Java编程方面的学习和实践经验。这篇实习报告是作者在广东广州软件园实习期间的成果展示,它揭示了实习生在专业技能...

    精通JAVA——JDK(高清PDF文件)

    总之,《精通JAVA——JDK》不仅涵盖了Java语言的基础和高级特性,还关注了JDK的实用工具和开发技巧,是Java初学者和有经验开发者提升技术的宝贵资源。通过深入阅读和实践,你将能够更好地掌握Java编程,为你的职业...

    java——jdk1.8

    总之,Java JDK 1.8是Java开发的核心工具,其丰富的特性和强大的性能支持了各种复杂的应用场景,无论是初学者还是经验丰富的开发者,都能从中受益。正确安装和配置JDK 1.8是进行Java编程的基础。

    java——1.rar_Java实习报告_java实习_java实习记录

    3. **集合框架**:Java的集合框架是处理对象集合的重要工具,包括List、Set、Map等接口,以及ArrayList、LinkedList、HashSet、HashMap等实现类。实习生需要理解它们之间的区别和应用场景。 4. **IO流**:Java的IO...

    java面试——深圳-中国平安-Java中级.zip

    在Java面试过程中,尤其是针对中级开发者的职位,面试官通常会关注候选人的基础知识、编程能力、框架理解以及项目经验。深圳作为中国的科技中心之一,中国平安作为一家知名的金融技术公司,其对Java开发者的要求自然...

    java面试——深圳-银盛支付-Java中级.zip

    4. **多线程**:了解线程的基本概念,如线程的创建(Thread类和Runnable接口)、线程同步(synchronized关键字、wait()、notify()和notifyAll()方法、Lock和Condition接口)以及并发工具类(CountDownLatch、...

    Java实战开发(李兴华)——代码部分

    在本资源中,“Java实战开发(李兴华)——代码部分”主要涵盖了Java编程语言的实际应用和项目开发。...通过学习和实践这些知识点,开发者可以提升自己的Java编程能力,并将理论知识转化为实际项目经验。

    java面试——深圳-OPPO-Java高级.zip

    - 并发工具类:了解ExecutorService、Future、Callable、ThreadLocal等在多线程环境中的作用。 - 线程池:分析ThreadPoolExecutor的工作原理,如何调整线程池参数以优化性能。 3. **集合框架**: - List、Set、...

    Android项目之——页面特效集合(附源码)(实用1).zip

    在本资源中,"Android项目之——页面特效集合(附源码)(实用1).zip",我们聚焦于Android应用程序开发中的页面特效实现。这个压缩包包含了一系列实用且有趣的源码,非常适合用作毕业设计或课程设计的参考,旨在帮助...

    Java语言程序设计A——课件

    8. **Java标准库**:讲解Java标准库中的常用类和API,如Math、String、Date、Calendar等,这些类库极大地丰富了Java的功能。 9. **泛型**:泛型是Java 5引入的新特性,提高了代码的类型安全性和重用性,学习泛型...

    Java笔试题————精华中的精华

    总之,"Java笔试题——精华中的精华"这份资料包含了Java开发的广泛领域,无论是初学者还是有经验的开发者,都可以通过这些题目来检验和提升自己的技术水平。掌握这些知识点,将有助于你在Java编程的世界中游刃有余。

    JAVA整合开发——新手必备

    "JAVA整合开发——新手必备"这一课程标题暗示了这是一套面向初学者的全面Java教程,旨在帮助新入行的开发者掌握Java的核心概念以及如何在实际项目中整合各种技术。以下是对这个主题的详细讲解: 1. **Java基础**:...

    java面试——上海-携程-Java高级.zip

    在Java高级面试中,面试官通常会关注应聘者对核心概念的理解、问题解决能力以及实际项目经验。以下是一些可能涉及的重要知识点: 1. **Java基础** - 内存管理:了解Java内存模型(堆、栈、方法区、本地方法栈)...

    java面试——上海-拼多多-Java高级.zip

    - 讲述Java并发工具类,如Semaphore、CountDownLatch、CyclicBarrier、ThreadPoolExecutor等的应用。 - Volatile关键字的作用以及与synchronized的区别。 - 并发容器类,如ConcurrentHashMap、BlockingQueue的...

    java面试——深圳-丰巢科技-Java高级.zip

    - 并发工具类:如Semaphore、CountDownLatch、CyclicBarrier等在并发控制中的应用。 3. **集合框架**: - ArrayList、LinkedList、HashSet、HashMap等常见集合类的实现原理及特点。 - 集合框架的并发支持:...

    Java ME实用详解——用Eclipse进行移动开发 源代码

    这个压缩包文件“Java ME实用详解——用Eclipse进行移动开发 源代码”显然是一个关于使用Eclipse IDE进行Java ME应用开发的资源集合,包含有源代码示例,适合初学者和有一定经验的开发者参考学习。 首先,我们要...

    java面试——杭州-蚂蚁金服-资深工程师.zip

    这意味着这份压缩包可能包含了针对Java语言、高级编程技巧、系统设计、以及蚂蚁金服特定的技术栈或项目经验等相关问题。 【描述解析】 描述部分与标题相同,"java面试——杭州-蚂蚁金服-资深工程师.zip",进一步...

    java开发实战1200例:121——155例的源代码

    在Java开发过程中,实战经验是提升技能的关键。"java开发实战1200例:121——155例的源代码"提供了一个丰富的学习资源库,涵盖了多个实际编程场景,旨在帮助开发者巩固基础,提升解决问题的能力。下面将详细探讨这...

Global site tag (gtag.js) - Google Analytics