import java.io.*;
import java.net.*;
import java.util.*;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import org.apache.log4j.Logger;
import com.sun.java_cup.internal.internal_error;
/**
*
* <p>
* Title:系统工具类
* </p>
* <p>
* Description:提供该项目中经常用到的系统方法
* </p>
* <p>
* Copyright: Copyright (c) 2009
* </p>
* <p>
* Company: BestPay
* </p>
*
* @author weishaofei
* @date Oct 29, 2009
* @version 1.0
*/
public class SysUtility {
private static Logger log = Logger.getLogger(SysUtility.class);
private static String config_folder = "conf";
private static String conf_root = null;
private static String file_root = null;
private static String log_root = null;
private static String tmp_file_root = null;
private static String localAddress = null;
private static Properties _ser_info = null;
private static Properties taskConfigInfo = null;
private static Properties noticeInfo = null;
public static final String CDATA_BEGIN_SYMBOLE = "C_$#_DATA_B";
public static final String CDATA_END_SYMBOLE = "C_$#_DATA_E";
public SysUtility() {
}
/**
*
* 方法说明:获取系统当前日期,以字符串形式返回(eg:2009-10-12)
*
* @return 系统当前日期
*/
public static String getCurrentDate() {
String s1 = "";
// String month = "";
// String day = "";
Calendar cal = Calendar.getInstance();
s1 = getDateAsString("-", cal, false);
return s1;
}
/**
*
* 方法说明:获取系统当前日期以后指定月数后的日期,以字符串形式返回(eg:2009-10-12)
*
* @months 月数
* @return 以当前时间为基数,返回指定月数后的日期
*/
public static String getCurrentDateAfterMonths(int months) {
Calendar t_cal = Calendar.getInstance();
String t_seperator = "-";
String ret_val = null;
String s_month = "";
int year = 0;
String s_year;
Calendar cal = Calendar.getInstance();
if (cal != null)
t_cal = cal;
int n = t_cal.get(2) + months;
year = t_cal.get(1) + (n / 12);
n = (n % 12) + 1;
if (n < 10)
s_month = "0" + n;
else
s_month = "" + n;
s_year = "" + year;
String s_day;
if (t_cal.get(5) < 10)
s_day = "0" + t_cal.get(5);
else
s_day = "" + t_cal.get(5);
ret_val = s_year + t_seperator + s_month + t_seperator + s_day;
return ret_val;
}
/**
*
* 方法说明:系统日期做为字符串类型返回
*
* @param seperator
* 年月日间的分隔符(eg:“/”或“-”)
* @param cal
* Calendar对象(可以通过Calendar.getInstance()返回该对象)
* @param is_short_year
* 年份是否缩写。ture 2009-10-12 false 09-10-12
* @return 日期字符串
*/
public static String getDateAsString(String seperator, Calendar cal,
boolean is_short_year) {
Calendar t_cal = Calendar.getInstance();
String t_seperator = "";
String ret_val = null;
if (cal != null)
t_cal = cal;
if (seperator != null && !seperator.trim().equalsIgnoreCase(""))
t_seperator = seperator;
String s_year = "" + t_cal.get(1);
if (is_short_year)
s_year = s_year.substring(2);
String s_month;
if (t_cal.get(2) + 1 < 10)
s_month = "0" + (t_cal.get(2) + 1);
else
s_month = "" + (t_cal.get(2) + 1);
String s_day;
if (t_cal.get(5) < 10)
s_day = "0" + t_cal.get(5);
else
s_day = "" + t_cal.get(5);
ret_val = s_year + t_seperator + s_month + t_seperator + s_day;
return ret_val;
}
/**
*
* 方法说明:获取系统当前时间(eg:15:14:34)
*
* @return 系统当前时间字符串
*/
public static String getCurrentTime() {
String s1 = "";
Calendar cal = Calendar.getInstance();
cal.setTime(new Date());
String hour;
if (cal.get(11) < 10)
hour = "0" + cal.get(11);
else
hour = cal.get(11) + "";
String minute;
if (cal.get(12) < 10)
minute = "0" + cal.get(12);
else
minute = cal.get(12) + "";
String second;
if (cal.get(13) < 10)
second = "0" + cal.get(13);
else
second = cal.get(13) + "";
s1 = hour + ":" + minute + ":" + second;
return s1;
}
/**
*
* 方法说明:获取系统当前时间或者当前时间前后几分钟的时间(eg:151434表示15:14:34)
*
* @param mins 与当前系统时间的分钟差 为整数
*
* @return 系统时间字符串 输入参数为0 表示系统当前时间字符串,负数表示系统时间之前,正数
* 表示系统时间之后
*/
public static String getCurrentTimeString(int mins) {
String s1 = "";
Calendar cal = Calendar.getInstance();
cal.setTime(new Date());
String hour;
int hourI=0;
int minuteI=0;
if(mins<0){
hourI=cal.get(11)-(-mins/60)%24;
if (hourI<0) {
hourI=hourI+24;
}
if ((-mins%60)>cal.get(12)) {
minuteI=cal.get(12)+60-(-mins%60);
hourI--;
if (hourI<0) {
hourI=hourI+24;
}
}else{
minuteI=cal.get(12)-(-mins%60);
}
}else {
hourI=((cal.get(12)+mins)/60+cal.get(11))%24;//24小时制
minuteI=(cal.get(12)+mins)%60;
}
if (hourI < 10)
hour = "0" + hourI;
else
hour = hourI + "";
String minute;
if ( minuteI< 10)
minute = "0" + minuteI;
else
minute = minuteI + "";
String second;
if (cal.get(13) < 10)
second = "0" + cal.get(13);
else
second = cal.get(13) + "";
s1 = hour + "" + minute + "" + second;
return s1;
}
/**
*
* <p>
* Description:判断指定时间是否在系统时间之前
* </p>
*
* @param timeString
* 指定时间,6位全数字符串(例如09:23:08 对应入参为092308)
* @return 如果指定时间在系统时间之前,则返回true
*/
public static boolean isBeforeCurrentTime(String timeString) {
boolean flag = false;
if (timeString == null || timeString == "" || timeString.length() < 6) {
return false;
} else {
if (Long.parseLong(getCurrentTimeString(0)) > Long
.parseLong(timeString)) {
flag = true;
}
}
return flag;
}
public static String getDate(Date date) {
String s1 = "";
Calendar cal = Calendar.getInstance();
cal.setTime(date);
s1 = cal.get(1) + "-" + (cal.get(2) + 1) + "-" + cal.get(5);
return s1;
}
/**
*
* 方法说明:获取当前日期字符串
*
* @param is_time
* 为true同时返回时间(eg:2009-11-11 14:32:07),为false仅返回日期(eg:2009-11-11)
* @return
*/
public static String getCurrDate(boolean is_time) {
String s1 = "";
Calendar cal = Calendar.getInstance();
s1 = getDateAsString("-", cal, false);
if (is_time) {
String hour;
if (cal.get(11) < 10)
hour = "0" + cal.get(11);
else
hour = cal.get(11) + "";
String minute;
if (cal.get(12) < 10)
minute = "0" + cal.get(12);
else
minute = cal.get(12) + "";
String second;
if (cal.get(13) < 10)
second = "0" + cal.get(13);
else
second = cal.get(13) + "";
s1 = s1 + " " + hour + ":" + minute + ":" + second;
}
return s1;
}
/**
* 将字符串hhmmss转换成字符串,格式hh:mm:ss
*/
public static String changeTime(String sTime) {
if (sTime == null || sTime.equals("") || sTime.length() < 6) {
return "";
} else {
String sTmp1 = "";
String sTmp2 = "";
String sTmp3 = "";
sTmp1 = sTime.substring(0, 2);
sTmp2 = sTime.substring(2, 4);
sTmp3 = sTime.substring(4, 6);
sTime = sTmp1 + ":" + sTmp2 +":"+ sTmp3 ;
return sTime;
}
}
/**
*
* 方法说明:获取系统当前时间或者当前时间前后几分钟的时间(形如:15:14:34)
*
* @param mins 与当前系统时间的分钟差 为整数
*
* @return 系统时间字符串 输入参数为0 表示系统当前时间字符串,负数表示系统时间之前,正数
* 表示系统时间之后,输出类型为(15:14:34)
*/
public static String getChangeTime(int mins) {
return changeTime(getCurrentTimeString(mins));
}
public static String getTime(Date date) {
String s1 = "";
Calendar cal = Calendar.getInstance();
cal.setTime(date);
s1 = cal.get(11) + ":" + cal.get(12) + ":" + cal.get(13);
return s1;
}
/**
*
* 方法说明:加载属性文件
*
* @param fileName
* 属性文件名称
* @return 返回Properties对象
*/
public static Properties getProperties(String fileName) {
Properties props = new Properties();
fileName = getConfigRoot() + "/" + fileName;
try {
java.io.InputStream in = new FileInputStream(fileName);
props.load(in);
} catch (Exception e) {
props = null;
}
return props;
}
/**
*
* 方法说明:从磁盘上读取文件内容
*
* @param fileName
* 文件名字及所在路径(例如:C:\\test.txt)
* @return 文件内容
* @throws Exception
* 抛出异常
*/
public static String readFileFromDisk(String fileName) throws Exception {
File file = new File(fileName);
FileInputStream fis = new FileInputStream(file);
byte fileBuffer[] = new byte[(int) file.length()];
fis.read(fileBuffer);
fis.close();
return new String(fileBuffer);
}
/**
*
* 方法说明:获取配置文件所在根目录
*
* @return 字符串—-系统配置文件所在根目录
*/
public static String getConfigRoot() {
if (conf_root == null)
conf_root = getDir(config_folder);
return conf_root;
}
/**
*
* 方法说明:获取临时文件所在目录
*
* @return
*/
public static String getTempFileRoot() {
if (tmp_file_root == null)
tmp_file_root = getDir("temp_files");
return tmp_file_root;
}
/**
*
* 方法说明:获取文件根目录(例如:D:/workspace/wddms/WebContent/WEB-INF)
*
* @return 文件物理目录字符串
*/
public static String getFileRoot() {
if (file_root == null) {
String s1 = "";
ClassLoader loader = Thread.currentThread().getContextClassLoader();
try {
URL url = loader.getResource("");
if (url != null && url.getPath() != null) {
String rootRealPath = url.getPath();
s1 = URLDecoder.decode(rootRealPath, "UTF-8");
if (s1.startsWith("/"))
s1 = s1.substring(1);
s1 = s1.substring(0, s1.length() - 1);
s1 = s1.substring(0, s1.lastIndexOf("/"));
File file = new File(s1);
boolean flag;
if (file != null && !file.exists())
flag = file.mkdir();
file_root = s1;
} else {
file_root = System.getProperty("user.dir");
}
} catch (Exception e) {
e.printStackTrace(System.err);
}
}
return file_root;
}
/**
*
* 方法说明:获取系统日志目录,如果不存在,则创建
*
* @return
*/
public static String getLogRoot() {
if (log_root == null)
log_root = getDir("logs");
return log_root;
}
/**
*
* 方法说明:创建目录并该目录所在完整路径
*
* @param dir
* 待创建目录名称
* @return 目录所在完整路径
*/
public static String getDir(String dir) {
String s1 = "";
try {
s1 = getFileRoot();
s1 = s1 + "/" + dir;
File file = new File(s1);
boolean flag;
if (file != null && !file.exists())
flag = file.mkdir();
} catch (Exception e) {
e.printStackTrace(System.err);
}
return s1;
}
/**
*
* 方法说明:获取服务器属性配置文件中参数值
*
* @param parameter
* 参数名称
* @return 字符串--参数值
* @throws Exception
* 抛出异常
*/
public static String getServerInfo(String parameter) throws Exception {
if (_ser_info == null)
_ser_info = getProperties("server_conf.prop");
String s1 = "";
s1 = _ser_info.getProperty(parameter);
s1 = StringUtil.ISO2GB(s1);
return s1;
}
/**
*
* 方法说明:获取配置文件监控sql参数值
*
* @param parameter
* 参数名称
* @return 字符串--参数值
* @throws Exception
* 抛出异常
*/
public static String getNoticeInfo(String parameter) throws Exception {
if (noticeInfo == null)
noticeInfo = getProperties("noticeInfo.prop");
String s1 = "";
s1 = noticeInfo.getProperty(parameter);
s1 = StringUtil.ISO2GB(s1);
return s1;
}
/**
*
* 方法说明:获取公告、工作提示和告警属性配置文件中参数值
*
* @param parameter
* 参数名称
* @return 字符串--参数值
* @throws Exception
* 抛出异常
*/
public static String getTaskConfigInfo(String parameter) {
if (taskConfigInfo == null)
taskConfigInfo = getProperties("taskConfig.prop");
String s1 = "";
s1 = taskConfigInfo.getProperty(parameter);
s1 = StringUtil.ISO2GB(s1);
return s1;
}
/**
*
* 方法说明:获取本地IP地址
*
* @return
*/
public static String getLocalAddress() {
if (localAddress == null)
try {
InetAddress ia = InetAddress.getLocalHost();
localAddress = ia.getHostAddress();
} catch (Exception e) {
}
return localAddress;
}
public static String dispCDATA(String old_str) {
String s1 = null;
if (old_str != null) {
StringBuffer s_buffer = new StringBuffer(old_str);
int p1 = 0;
int p2 = 0;
for (p1 = s_buffer.indexOf("C_$#_DATA_B"); p1 >= 0; p1 = s_buffer
.indexOf("C_$#_DATA_B"))
s_buffer.replace(p1, p1 + "C_$#_DATA_B".length(), "<![CDATA[");
for (p2 = s_buffer.indexOf("C_$#_DATA_E"); p2 >= 0; p2 = s_buffer
.indexOf("C_$#_DATA_E"))
s_buffer.replace(p2, p2 + "C_$#_DATA_E".length(), "]]>");
s1 = s_buffer.toString();
}
return s1;
}
/**
*
* 方法说明:获取Calendar对象
*
* @return 一个Calendar实例对象
*/
public static Calendar getCalendar() {
Calendar cal = Calendar.getInstance();
return cal;
}
/**
* 返回当前是星期几 如今天是星期三,则返回3
* @return
*/
public static int getDayOfWeek(){
Calendar calendar = Calendar.getInstance();
calendar.setTime(new Date());
int dayOfWeek = calendar.get(Calendar.DAY_OF_WEEK);
return dayOfWeek-1;
}
/**
* 验证邮箱的合法性 add by ycy
*
* @param email
* @return 合法返回true,非法返回false
*/
public static boolean checkEmail(String email) {
String emailt="";
if(email!=null&&!"".equals(email)){
emailt=email.toLowerCase().trim();
}
Pattern pattern = Pattern.compile("\\w+@(\\w+\\.)+[a-z]{2,3}");
Matcher matcher = pattern.matcher(emailt);
boolean flag = matcher.matches();
return flag;
}
public static void main(String args[]) throws Exception {
log.info(SysUtility.getCurrentDateAfterMonths(36));
log.info(SysUtility.getCurrentTimeString(0));
log.info(SysUtility.getCurrentTimeString(23*60));
log.info(SysUtility.getCurrentTimeString(24));
log.info(SysUtility.getCurrentTimeString(79));
log.info(SysUtility.getCurrentTimeString(-120));
log.info(SysUtility.getCurrentTimeString(-5));
log.info(SysUtility.getCurrentTimeString(13));
log.info(SysUtility.getCurrentTimeString(-47*60));
String email = "liuyu0831@189.CN ";
log.info("==============="+checkEmail(email));
// String s1 = "C_$#_DATA_BasdfasdfasdfaC_$#_DATA_E";
// // String s2 = getServerInfo("web_root");
// // String s2 = getCurrDate(true);
// System.out.println(SysUtility.getDateAsString("/", SysUtility
// .getCalendar(), false));
// System.out.println(System.getProperty("user.dir"));
// System.out.println(SysUtility.getCurrentTime());
// //System.out.println(SysUtility.readFileFromDisk("C:\\test.txt"));
// System.out.println(getFileRoot());
System.out.println(SysUtility.getLogRoot());
// System.out.println(SysUtility.getTempFileRoot());
// log.info(SysUtility.getServerInfo("serverName"));
log.info(SysUtility.getTaskConfigInfo("CommTimeOut"));
// System.out.println(SysUtility.getServerInfo("name"));
// System.out.println(SysUtility.dispCDATA(s1));
// //System.out.println(SysUtility.hiddenCDATA("<![CDATA[asdfasdfasdfa]]>"));
// System.out.println(SysUtility.getLocalAddress());
/**
* 以下是上面测试语句运行时在控制台打印的信息: 2009/10/12 D:\workspace\wddms 20:41:58
* abcdefghigklmnopqrstuvwxyz 我是中国人 我爱我的国家 $@#%^&*~te特殊符号 管理学院东华大学
* D:/workspace/wddms/WebContent/WEB-INF
* D:/workspace/wddms/WebContent/WEB-INF/conf
* D:/workspace/wddms/WebContent/WEB-INF/temp_files windowsXP;
* 192.168.19.23 <![CDATA[asdfasdfasdfa]]>
* C_$#_DATA_BasdfasdfasdfaC_$#_DATA_E 127.0.0.1
*/
}
}
分享到:
相关推荐
本压缩包文件“Java精品项目源码第30期强烈推荐小区管理物业系统.zip”包含了一个完整的Java项目,主要用于小区物业管理。该项目适用于课程设计或毕业设计,为学习者提供了宝贵的实践素材,帮助他们深入理解Java编程...
这个"asp 精品课程 源码"的压缩包文件包含了一系列与ASP编程相关的源代码文件,我们可以从这些文件名中推测出课程的一些主要内容。 1. **titleb.asp**:此文件很可能用于显示网站的标题或者页面头部信息。在ASP中,...
在“精品软件工具--以一个完整的项目范例说明软件开发的思想、原则、实践和工具集.zip”这个压缩包中,我们可以预见到它包含了丰富的软件开发资源,旨在通过一个实际的项目案例来阐述软件开发的核心概念、指导原则...
《Java精品项目源码第64期:在线心理测评系统》 该项目是一个基于Java技术的在线心理测评系统,旨在提供一个便捷、专业的平台,让用户能够进行自我心理状况的评估和测试。通过这个系统,用户可以参与多种心理测试,...
【标题】"Java精品项目源码第99期宠物医院商城系统.zip" 是一个Java编程语言实现的电子商务项目,特别针对宠物医院的商品和服务销售。这个系统可能是为了满足毕业设计或课程设计的需求,提供了完整的源代码供学习者...
Maven,作为Java项目管理和构建工具,是开发人员不可或缺的利器。本教程将全面深入地探讨Maven的核心概念、配置、生命周期、插件以及实际项目中的应用,旨在帮助开发者高效地管理和构建Java项目。 **一、Maven基本...
《Java精品项目源码第84期学生信息管理系统》是一个典型的Java编程实践案例,适合用于课程设计或毕业设计。这个项目的核心目标是实现一个能够管理学生信息的系统,包括增删改查等基本功能,同时也可能包含一些高级...
【Java精品项目源码51期美食设计网站.zip】是一个包含Java编程语言实现的美食设计网站的源代码包。这个项目可能是一个针对学生进行毕业设计或课程设计的实践案例,帮助学习者提升Java web开发技能。以下是这个项目中...
没错,就是那个彩虹云商城/彩虹云任务/彩虹聚合登录的作者,彩虹工具箱为另一新作,彩虹出品,必属精品,由于原版没有后台广告位设置,所以我又加了60元定制了这款可以设置广告位的彩虹工具箱源码,由于这款工具箱的...
这个"Android精品源码拖动条控件实现源码.rar"文件包含了一套专门用于实现自定义拖动条功能的源代码,可能是对原生SeekBar的扩展或优化。由于无法直接查看源码内容,以下将根据常规的自定义SeekBar的实现方式,解释...
【Java精品项目源码第81期在线水果销售商城系统】是一个典型的Web应用程序,它结合了Java编程语言、Web框架和数据库技术,旨在提供一个完整的在线购物体验。这个项目不仅适用于学习者进行课程设计或毕业设计,也适合...
本篇文章将深入探讨一款基于Delphi开发的精典源码——"IT业进销存管理系统",通过源码分析,揭示其设计思想与实现技术。 1. Delphi编程环境 Delphi是一种高效、强大的面向对象的编程语言,源自Pascal,由...
【描述】提到"五个常用ASP企业网站源码",这表明这些源码在实际项目中被广泛使用,可能是经过验证、稳定且功能齐全的模板。开发者或网站设计师可以基于这些源码进行定制,快速搭建企业网站,节省时间和成本。遗憾的...
11. **版本控制**:项目开发过程中,版本控制工具如Git可能被用来管理代码版本和协同开发。 12. **文档**:项目可能附带了README文件或API文档,用于解释如何部署和使用系统,以及其核心功能的工作原理。 通过学习...
2. **Web开发**:在Java世界里,SpringBoot是构建Web应用的常用工具。它可以配合Thymeleaf、Freemarker或者JSP等模板引擎来生成动态HTML,也可以与RESTful API结合,提供JSON或XML响应。 3. **小说网站系统**:这个...
标题 "aaaa" 提供的信息较少,但从标签 "源码" 和 "工具" 我们可以推测这篇文章可能涉及软件开发中的源代码管理和实用工具。描述中给出的博客链接指向了一个具体的资源,但由于链接不可直接访问,我们无法直接获取...
这个项目采用了SSM框架,即Spring、SpringMVC和MyBatis的集成,是Java Web开发中常用的技术栈。下面我们将深入探讨这套源码所涉及的知识点。 1. **Spring框架**:Spring是Java企业级应用的核心框架,它提供了依赖...
【标题】"java精品源码第39期教材管理系统.zip" 涉及的主要知识点是Java编程语言在构建一个教材管理系统中的应用。这个系统可能是为了帮助教育机构或学校管理教材库存、分配、购买等流程而设计的。在这个项目中,...
JUnit和Espresso是Android测试的常用工具。 12. **混淆与打包**:对于发布版本,源码可能会包含Proguard配置,用于代码混淆和优化,以及如何打包APK的步骤。 通过对这个源码的深入分析和学习,开发者可以提升自己...
5. utils:工具类文件,存放一些常用的函数和方法。 6. images:图片资源文件夹,包含游戏中的图标、背景图等。 7. json配置文件:各页面和组件的配置,如导航栏、网络请求的配置等。 开发者在获取到这个源码后,...