??xml version="1.0" encoding="utf-8" standalone="yes"?>日韩av免费在线看,色是在线视频,亚洲欧洲国产精品久久http://www.aygfsteel.com/terrywu/category/11703.htmlzh-cnThu, 16 Aug 2007 08:03:40 GMTThu, 16 Aug 2007 08:03:40 GMT60log4j.properties使用http://www.aygfsteel.com/terrywu/articles/137164.htmlTNTTNTThu, 16 Aug 2007 03:19:00 GMThttp://www.aygfsteel.com/terrywu/articles/137164.htmlhttp://www.aygfsteel.com/terrywu/comments/137164.htmlhttp://www.aygfsteel.com/terrywu/articles/137164.html#Feedback0http://www.aygfsteel.com/terrywu/comments/commentRss/137164.htmlhttp://www.aygfsteel.com/terrywu/services/trackbacks/137164.htmllog4j.properties 使用
一.参数意义说明
输出U别的种c?br>ERROR、WARN、INFO、DEBUG
ERROR Z重错?主要是程序的错误
WARN Z般警告,比如session丢失
INFO Z般要昄的信息,比如dd
DEBUG 为程序的调试信息

配置日志信息输出目的?br>log4j.appender.appenderName = fully.qualified.name.of.appender.class
1.org.apache.log4j.ConsoleAppenderQ控制台Q?br>2.org.apache.log4j.FileAppenderQ文Ӟ
3.org.apache.log4j.DailyRollingFileAppenderQ每天生一个日志文Ӟ
4.org.apache.log4j.RollingFileAppenderQ文件大到达指定尺寸的时候生一个新的文Ӟ
5.org.apache.log4j.WriterAppenderQ将日志信息以流格式发送到L指定的地方)


配置日志信息的格?br>log4j.appender.appenderName.layout = fully.qualified.name.of.layout.class
1.org.apache.log4j.HTMLLayoutQ以HTML表格形式布局Q,
2.org.apache.log4j.PatternLayoutQ可以灵zd指定布局模式Q,
3.org.apache.log4j.SimpleLayoutQ包含日志信息的U别和信息字W串Q,
4.org.apache.log4j.TTCCLayoutQ包含日志生的旉、线E、类别等{信息)

控制台选项
Threshold=DEBUG:指定日志消息的输出最低层ơ?br>ImmediateFlush=true:默认值是true,意谓着所有的消息都会(x)被立卌出?br>Target=System.errQ默认情况下是:(x)System.out,指定输出控制?/p>

FileAppender 选项
Threshold=DEBUF:指定日志消息的输出最低层ơ?br>ImmediateFlush=true:默认值是true,意谓着所有的消息都会(x)被立卌出?br>File=mylog.txt:指定消息输出到mylog.txt文g?br>Append=false:默认值是true,卛_消息增加到指定文件中Qfalse指将消息覆盖指定的文件内宏V?/p>

RollingFileAppender 选项
Threshold=DEBUG:指定日志消息的输出最低层ơ?br>ImmediateFlush=true:默认值是true,意谓着所有的消息都会(x)被立卌出?br>File=mylog.txt:指定消息输出到mylog.txt文g?br>Append=false:默认值是true,卛_消息增加到指定文件中Qfalse指将消息覆盖指定的文件内宏V?br>MaxFileSize=100KB: 后缀可以是KB, MB 或者是 GB. 在日志文件到达该大小Ӟ会(x)自动滚动Q即原来的内容Udmylog.log.1文g?br>MaxBackupIndex=2:指定可以产生的滚动文件的最大数?

log4j.appender.A1.layout.ConversionPattern=%-4r %-5p %d{yyyy-MM-dd HH:mm:ssS} %c %m%n
日志信息格式中几个符h代表的含义:(x)
 -X? X信息输出时左寚wQ?br> %p: 输出日志信息优先U,即DEBUGQINFOQW(xu)ARNQERRORQFATAL,
 %d: 输出日志旉点的日期或时_(d)默认格式为ISO8601Q也可以在其后指定格式,比如Q?d{yyy MMM dd HH:mm:ss,SSS}Q输出类|(x)2002q?0?8?22Q?0Q?8Q?21
 %r: 输出自应用启动到输出该log信息耗费的毫U数
 %c: 输出日志信息所属的cȝQ通常是所在类的全?br> %t: 输出产生该日志事件的U程?br> %l: 输出日志事g的发生位|,相当?C.%M(%F:%L)的组?包括cȝ名、发生的U程Q以?qing)在代码中的行数。D例:(x)Testlog4.main (TestLog4.java:10)
 %x: 输出和当前线E相兌的NDC(嵌套诊断环境),其用到像java servletsq样的多客户多线E的应用中?br> %%: 输出一?%"字符
 %F: 输出日志消息产生时所在的文g名称
 %L: 输出代码中的行号
 %m: 输出代码中指定的消息,产生的日志具体信?br> %n: 输出一个回车换行符QW(xu)indowsq_?\r\n"QUnixq_?\n"输出日志信息换行
 可以?与模式字W之间加上修饰符来控制其最宽度、最大宽度、和文本的对齐方式。如Q?br> 1)%20cQ指定输出category的名Uͼ最的宽度?0Q如果category的名U小?0的话Q默认的情况下右寚w?br> 2)%-20c:指定输出category的名Uͼ最的宽度?0Q如果category的名U小?0的话Q?-"h定左寚w?br> 3)%.30c:指定输出category的名Uͼ最大的宽度?0Q如果category的名U大?0的话Q就?x)将左边多出的字W截掉,但小?0的话也不?x)有I格?br> 4)%20.30c:如果category的名U小?0pI格Qƈ且右寚wQ如果其名称长于30字符Q就从左边较q输出的字符截掉?

?文g配置Sample1
log4j.rootLogger=DEBUG,A1,R
#log4j.rootLogger=INFO,A1,R

# ConsoleAppender 输出
log4j.appender.A1=org.apache.log4j.ConsoleAppender
log4j.appender.A1.layout=org.apache.log4j.PatternLayout
log4j.appender.A1.layout.ConversionPattern=%-d{yyyy-MM-dd HH:mm:ss,SSS} [%c]-[%p] %m%n

# File 输出 一天一个文?输出路径可以定制,一般在根\径下
log4j.appender.R=org.apache.log4j.DailyRollingFileAppender
log4j.appender.R.File=blog_log.txt
log4j.appender.R.MaxFileSize=500KB
log4j.appender.R.MaxBackupIndex=10
log4j.appender.R.layout=org.apache.log4j.PatternLayout
log4j.appender.R.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss,SSS} [%t] [%c] [%p] - %m%n

文g配置Sample2
下面l出的Log4J配置文g实现了输出到控制収ͼ文gQ回滚文Ӟ发送日志邮Ӟ输出到数据库日志表,自定义标{全套功能?br>log4j.rootLogger=DEBUG,CONSOLE,A1,im
#DEBUG,CONSOLE,FILE,ROLLING_FILE,MAIL,DATABASE

log4j.addivity.org.apache=true


###################
# Console Appender
###################
log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
log4j.appender.Threshold=DEBUG
log4j.appender.CONSOLE.Target=System.out
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
log4j.appender.CONSOLE.layout.ConversionPattern=[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n
#log4j.appender.CONSOLE.layout.ConversionPattern=[start]%d{DATE}[DATE]%n%p[PRIORITY]%n%x[NDC]%n%t[THREAD] n%c[CATEGORY]%n%m[MESSAGE]%n%n


#####################
# File Appender
#####################
log4j.appender.FILE=org.apache.log4j.FileAppender
log4j.appender.FILE.File=file.log
log4j.appender.FILE.Append=false
log4j.appender.FILE.layout=org.apache.log4j.PatternLayout
log4j.appender.FILE.layout.ConversionPattern=[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n
# Use this layout for LogFactor 5 analysis

 

########################
# Rolling File
########################
log4j.appender.ROLLING_FILE=org.apache.log4j.RollingFileAppender
log4j.appender.ROLLING_FILE.Threshold=ERROR
log4j.appender.ROLLING_FILE.File=rolling.log
log4j.appender.ROLLING_FILE.Append=true
log4j.appender.ROLLING_FILE.MaxFileSize=10KB
log4j.appender.ROLLING_FILE.MaxBackupIndex=1
log4j.appender.ROLLING_FILE.layout=org.apache.log4j.PatternLayout
log4j.appender.ROLLING_FILE.layout.ConversionPattern=[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n


####################
# Socket Appender
####################
log4j.appender.SOCKET=org.apache.log4j.RollingFileAppender
log4j.appender.SOCKET.RemoteHost=localhost
log4j.appender.SOCKET.Port=5001
log4j.appender.SOCKET.LocationInfo=true
# Set up for Log Facter 5
log4j.appender.SOCKET.layout=org.apache.log4j.PatternLayout
log4j.appender.SOCET.layout.ConversionPattern=[start]%d{DATE}[DATE]%n%p[PRIORITY]%n%x[NDC]%n%t[THREAD]%n%c[CATEGORY]%n%m[MESSAGE]%n%n


########################
# Log Factor 5 Appender
########################
log4j.appender.LF5_APPENDER=org.apache.log4j.lf5.LF5Appender
log4j.appender.LF5_APPENDER.MaxNumberOfRecords=2000


########################
# SMTP Appender
#######################
log4j.appender.MAIL=org.apache.log4j.net.SMTPAppender
log4j.appender.MAIL.Threshold=FATAL
log4j.appender.MAIL.BufferSize=10
log4j.appender.MAIL.From=chenyl@hollycrm.com
log4j.appender.MAIL.SMTPHost=mail.hollycrm.com
log4j.appender.MAIL.Subject=Log4J Message
log4j.appender.MAIL.To=chenyl@hollycrm.com
log4j.appender.MAIL.layout=org.apache.log4j.PatternLayout
log4j.appender.MAIL.layout.ConversionPattern=[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n


########################
# JDBC Appender
#######################
log4j.appender.DATABASE=org.apache.log4j.jdbc.JDBCAppender
log4j.appender.DATABASE.URL=jdbc:mysql://localhost:3306/test
log4j.appender.DATABASE.driver=com.mysql.jdbc.Driver
log4j.appender.DATABASE.user=root
log4j.appender.DATABASE.password=
log4j.appender.DATABASE.sql=INSERT INTO LOG4J (Message) VALUES ('[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n')
log4j.appender.DATABASE.layout=org.apache.log4j.PatternLayout
log4j.appender.DATABASE.layout.ConversionPattern=[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n


log4j.appender.A1=org.apache.log4j.DailyRollingFileAppender
log4j.appender.A1.File=SampleMessages.log4j
log4j.appender.A1.DatePattern=yyyyMMdd-HH'.log4j'
log4j.appender.A1.layout=org.apache.log4j.xml.XMLLayout

###################
#自定义Appender
###################
log4j.appender.im = net.cybercorlin.util.logger.appender.IMAppender

log4j.appender.im.host = mail.cybercorlin.net
log4j.appender.im.username = username
log4j.appender.im.password = password
log4j.appender.im.recipient = corlin@cybercorlin.net

log4j.appender.im.layout=org.apache.log4j.PatternLayout
log4j.appender.im.layout.ConversionPattern =[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n


?高使用
实验目的Q?br> 1.把FATALU错误写?000NT日志
 2. WARNQERRORQFATALU错误发送email通知理?br> 3.其他U别的错误直接在后台输出


 实验步骤Q?br> 输出?000NT日志
 1.把Log4j压羃包里的NTEventLogAppender.dll拷到WINNT\SYSTEM32目录?br> 2.写配|文件log4j.properties

 # ?000pȝ日志输出
 log4j.logger.NTlog=FATAL, A8
 # APPENDER A8
 log4j.appender.A8=org.apache.log4j.nt.NTEventLogAppender
 log4j.appender.A8.Source=JavaTest
 log4j.appender.A8.layout=org.apache.log4j.PatternLayout
 log4j.appender.A8.layout.ConversionPattern=%-4r %-5p [%t] %37c %3x - %m%n

 3.调用代码Q?br> Logger logger2 = Logger.getLogger("NTlog"); //要和配置文g中设|的名字相同
 logger2.debug("debug!!!");
 logger2.info("info!!!");
 logger2.warn("warn!!!");
 logger2.error("error!!!");
 //只有q个错误才会(x)写入2000日志
 logger2.fatal("fatal!!!");


 发送email通知理员:(x)
 1. 首先下蝲JavaMail和JAF,
  http://java.sun.com/j2ee/ja/javamail/index.html
  http://java.sun.com/beans/glasgow/jaf.html
 在项目中引用mail.jar和activation.jar?br> 2. 写配|文?br> # 日志发送到email
 log4j.logger.MailLog=WARN,A5
 #  APPENDER A5
 log4j.appender.A5=org.apache.log4j.net.SMTPAppender
 log4j.appender.A5.BufferSize=5
 log4j.appender.A5.To=chunjie@263.net
 log4j.appender.A5.From=error@error.com
 log4j.appender.A5.Subject=ErrorLog
 log4j.appender.A5.SMTPHost=smtp.263.net
 log4j.appender.A5.layout=org.apache.log4j.PatternLayout
 log4j.appender.A5.layout.ConversionPattern=%-4r %-5p [%t] %37c %3x - %m%n
 3.调用代码Q?br> //把日志发送到mail
 Logger logger3 = Logger.getLogger("MailLog");
 logger3.warn("warn!!!");
 logger3.error("error!!!");
 logger3.fatal("fatal!!!");

 在后台输出所有类别的错误Q?br> 1. 写配|文?br> # 在后台输?br> log4j.logger.console=DEBUG, A1
 # APPENDER A1
 log4j.appender.A1=org.apache.log4j.ConsoleAppender
 log4j.appender.A1.layout=org.apache.log4j.PatternLayout
 log4j.appender.A1.layout.ConversionPattern=%-4r %-5p [%t] %37c %3x - %m%n
 2Q调用代?br> Logger logger1 = Logger.getLogger("console");
 logger1.debug("debug!!!");
 logger1.info("info!!!");
 logger1.warn("warn!!!");
 logger1.error("error!!!");
 logger1.fatal("fatal!!!");

 --------------------------------------------------------------------
 全部配置文gQlog4j.properties
 # 在后台输?br> log4j.logger.console=DEBUG, A1
 # APPENDER A1
 log4j.appender.A1=org.apache.log4j.ConsoleAppender
 log4j.appender.A1.layout=org.apache.log4j.PatternLayout
 log4j.appender.A1.layout.ConversionPattern=%-4r %-5p [%t] %37c %3x - %m%n

 # ?000pȝ日志输出
 log4j.logger.NTlog=FATAL, A8
 # APPENDER A8
 log4j.appender.A8=org.apache.log4j.nt.NTEventLogAppender
 log4j.appender.A8.Source=JavaTest
 log4j.appender.A8.layout=org.apache.log4j.PatternLayout
 log4j.appender.A8.layout.ConversionPattern=%-4r %-5p [%t] %37c %3x - %m%n

 # 日志发送到email
 log4j.logger.MailLog=WARN,A5
 #  APPENDER A5
 log4j.appender.A5=org.apache.log4j.net.SMTPAppender
 log4j.appender.A5.BufferSize=5
 log4j.appender.A5.To=chunjie@263.net
 log4j.appender.A5.From=error@error.com
 log4j.appender.A5.Subject=ErrorLog
 log4j.appender.A5.SMTPHost=smtp.263.net
 log4j.appender.A5.layout=org.apache.log4j.PatternLayout
 log4j.appender.A5.layout.ConversionPattern=%-4r %-5p [%t] %37c %3x - %m%n

 全部代码QLog4jTest.java
 
/*
  * 创徏日期 2003-11-13
  */
 package edu.bcu.Bean;
 import org.apache.log4j.*;
 //import org.apache.log4j.nt.*;
 //import org.apache.log4j.net.*;
 /**
  * @author yanxu
  */
 public class Log4jTest
 {
  public static void main(String args[])
  {
   PropertyConfigurator.configure("log4j.properties");
   //在后台输?
   Logger logger1 = Logger.getLogger("console");
   logger1.debug("debug!!!");
   logger1.info("info!!!");
   logger1.warn("warn!!!");
   logger1.error("error!!!");
   logger1.fatal("fatal!!!");

   //在NTpȝ日志输出
   Logger logger2 = Logger.getLogger("NTlog");
   //NTEventLogAppender nla = new NTEventLogAppender();
   logger2.debug("debug!!!");
   logger2.info("info!!!");
   logger2.warn("warn!!!");
   logger2.error("error!!!");
   //只有q个错误才会(x)写入2000日志
   logger2.fatal("fatal!!!");

   //把日志发送到mail
   Logger logger3 = Logger.getLogger("MailLog");
   //SMTPAppender sa = new SMTPAppender();
   logger3.warn("warn!!!");
   logger3.error("error!!!");
   logger3.fatal("fatal!!!");
  }
 }
 




TNT 2007-08-16 11:19 发表评论
]]>
Java日期操作常用Ҏ(gu)http://www.aygfsteel.com/terrywu/articles/58961.htmlTNTTNTWed, 19 Jul 2006 04:15:00 GMThttp://www.aygfsteel.com/terrywu/articles/58961.htmlhttp://www.aygfsteel.com/terrywu/comments/58961.htmlhttp://www.aygfsteel.com/terrywu/articles/58961.html#Feedback0http://www.aygfsteel.com/terrywu/comments/commentRss/58961.htmlhttp://www.aygfsteel.com/terrywu/services/trackbacks/58961.html http://iamin.blogdriver.com/iamin/847990.html  
       /**  
         *  取得指定月䆾的第一? 
         *  
         *  @param  strdate  String  
         *  @return  String  
         */  
       public  String  getMonthBegin(String  strdate)  
       {  
               java.util.Date  date  =  parseFormatDate(strdate);  
               return  formatDateByFormat(date,"yyyy-MM")  +  "-01";  
       }  
 
       /**  
         *  取得指定月䆾的最后一? 
         *  
         *  @param  strdate  String  
         *  @return  String  
         */  
       public  String  getMonthEnd(String  strdate)  
       {  
               java.util.Date  date  =  parseFormatDate(getMonthBegin(strdate));  
               Calendar  calendar  =  Calendar.getInstance();  
               calendar.setTime(date);  
               calendar.add(Calendar.MONTH,1);  
               calendar.add(Calendar.DAY_OF_YEAR,  -1);  
               return  formatDate(calendar.getTime());  
       }  
 
       /**  
         *  常用的格式化日期  
         *  
         *  @param  date  Date  
         *  @return  String  
         */  
       public  String  formatDate(java.util.Date  date)  
       {  
               return  formatDateByFormat(date,"yyyy-MM-dd");  
       }  
 
       /**  
         *  以指定的格式来格式化日期  
         *  
         *  @param  date  Date  
         *  @param  format  String  
         *  @return  String  
         */  
       public  String  formatDateByFormat(java.util.Date  date,String  format)  
       {  
               String  result  =  "";  
               if(date  !=  null)  
               {  
                       try  
                       {  
                               SimpleDateFormat  sdf  =  new  SimpleDateFormat(format);  
                               result  =  sdf.format(date);  
                       }  
                       catch(Exception  ex)  
                       {  
                               LOGGER.info("date:"  +  date);  
                               ex.printStackTrace();  
                       }  
               }  
               return  result;  
       }  
---------------------------------------------------------------  
 
package  com.app.util;  
 
/**  
 *  日期操作  
 *    
 *  @author  xxx  
 *  @version  2.0  jdk1.4.0  tomcat5.1.0  *  Updated  Date:2005/03/10  
 */  
public  class  DateUtil  {  
           /**  
             *  格式化日? 
             *    
             *  @param  dateStr  
             *                        字符型日? 
             *  @param  format  
             *                        格式  
             *  @return  q回日期  
             */  
           public  static  java.util.Date  parseDate(String  dateStr,  String  format)  {  
                       java.util.Date  date  =  null;  
                       try  {  
                                   java.text.DateFormat  df  =  new  java.text.SimpleDateFormat(format);  
                                   String  dt=Normal.parse(dateStr).replaceAll(  
                                                           "-",  "/");  
                                   if((!dt.equals(""))&&(dt.length()<format.length())){  
                                               dt+=format.substring(dt.length()).replaceAll("[YyMmDdHhSs]","0");  
                                   }  
                                   date  =  (java.util.Date)  df.parse(dt);  
                       }  catch  (Exception  e)  {  
                       }  
                       return  date;  
           }  
 
           public  static  java.util.Date  parseDate(String  dateStr)  {  
                       return  parseDate(dateStr,  "yyyy/MM/dd");  
           }  
 
           public  static  java.util.Date  parseDate(java.sql.Date  date)  {  
                       return  date;  
           }  
             
           public  static  java.sql.Date  parseSqlDate(java.util.Date  date)  {  
                       if  (date  !=  null)  
                                   return  new  java.sql.Date(date.getTime());  
                       else  
                                   return  null;  
           }  
 
           public  static  java.sql.Date  parseSqlDate(String  dateStr,  String  format)  {  
                       java.util.Date  date  =  parseDate(dateStr,  format);  
                       return  parseSqlDate(date);  
           }  
 
           public  static  java.sql.Date  parseSqlDate(String  dateStr)  {  
                       return  parseSqlDate(dateStr,  "yyyy/MM/dd");  
           }  
 
             
           public  static  java.sql.Timestamp  parseTimestamp(String  dateStr,  
                                   String  format)  {  
                       java.util.Date  date  =  parseDate(dateStr,  format);  
                       if  (date  !=  null)  {  
                                   long  t  =  date.getTime();  
                                   return  new  java.sql.Timestamp(t);  
                       }  else  
                                   return  null;  
           }  
 
           public  static  java.sql.Timestamp  parseTimestamp(String  dateStr)  {  
                       return  parseTimestamp(dateStr,  "yyyy/MM/dd  HH:mm:ss");  
           }  
 
           /**  
             *  格式化输出日? 
             *    
             *  @param  date  
             *                        日期  
             *  @param  format  
             *                        格式  
             *  @return  q回字符型日? 
             */  
           public  static  String  format(java.util.Date  date,  String  format)  {  
                       String  result  =  "";  
                       try  {  
                                   if  (date  !=  null)  {  
                                               java.text.DateFormat  df  =  new  java.text.SimpleDateFormat(format);  
                                               result  =  df.format(date);  
                                   }  
                       }  catch  (Exception  e)  {  
                       }  
                       return  result;  
           }  
 
           public  static  String  format(java.util.Date  date)  {  
                       return  format(date,  "yyyy/MM/dd");  
           }  
 
           /**  
             *  q回q䆾  
             *    
             *  @param  date  
             *                        日期  
             *  @return  q回q䆾  
             */  
           public  static  int  getYear(java.util.Date  date)  {  
                       java.util.Calendar  c  =  java.util.Calendar.getInstance();  
                       c.setTime(date);  
                       return  c.get(java.util.Calendar.YEAR);  
           }  
 
           /**  
             *  q回月䆾  
             *    
             *  @param  date  
             *                        日期  
             *  @return  q回月䆾  
             */  
           public  static  int  getMonth(java.util.Date  date)  {  
                       java.util.Calendar  c  =  java.util.Calendar.getInstance();  
                       c.setTime(date);  
                       return  c.get(java.util.Calendar.MONTH)  +  1;  
           }  
 
           /**  
             *  q回日䆾  
             *    
             *  @param  date  
             *                        日期  
             *  @return  q回日䆾  
             */  
           public  static  int  getDay(java.util.Date  date)  {  
                       java.util.Calendar  c  =  java.util.Calendar.getInstance();  
                       c.setTime(date);  
                       return  c.get(java.util.Calendar.DAY_OF_MONTH);  
           }  
 
           /**  
             *  q回时  
             *    
             *  @param  date  
             *                        日期  
             *  @return  q回时  
             */  
           public  static  int  getHour(java.util.Date  date)  {  
                       java.util.Calendar  c  =  java.util.Calendar.getInstance();  
                       c.setTime(date);  
                       return  c.get(java.util.Calendar.HOUR_OF_DAY);  
           }  
 
           /**  
             *  q回分钟  
             *    
             *  @param  date  
             *                        日期  
             *  @return  q回分钟  
             */  
           public  static  int  getMinute(java.util.Date  date)  {  
                       java.util.Calendar  c  =  java.util.Calendar.getInstance();  
                       c.setTime(date);  
                       return  c.get(java.util.Calendar.MINUTE);  
           }  
 
           /**  
             *  q回U钟  
             *    
             *  @param  date  
             *                        日期  
             *  @return  q回U钟  
             */  
           public  static  int  getSecond(java.util.Date  date)  {  
                       java.util.Calendar  c  =  java.util.Calendar.getInstance();  
                       c.setTime(date);  
                       return  c.get(java.util.Calendar.SECOND);  
           }  
 
           /**  
             *  q回毫秒  
             *    
             *  @param  date  
             *                        日期  
             *  @return  q回毫秒  
             */  
           public  static  long  getMillis(java.util.Date  date)  {  
                       java.util.Calendar  c  =  java.util.Calendar.getInstance();  
                       c.setTime(date);  
                       return  c.getTimeInMillis();  
           }  
 
           /**  
             *  q回字符型日? 
             *    
             *  @param  date  
             *                        日期  
             *  @return  q回字符型日? 
             */  
           public  static  String  getDate(java.util.Date  date)  {  
                       return  format(date,  "yyyy/MM/dd");  
           }  
 
           /**  
             *  q回字符型时? 
             *    
             *  @param  date  
             *                        日期  
             *  @return  q回字符型时? 
             */  
           public  static  String  getTime(java.util.Date  date)  {  
                       return  format(date,  "HH:mm:ss");  
           }  
 
           /**  
             *  q回字符型日期时? 
             *    
             *  @param  date  
             *                        日期  
             *  @return  q回字符型日期时? 
             */  
           public  static  String  getDateTime(java.util.Date  date)  {  
                       return  format(date,  "yyyy/MM/dd  HH:mm:ss");  
           }  
 
           /**  
             *  日期相加  
             *    
             *  @param  date  
             *                        日期  
             *  @param  day  
             *                        天数  
             *  @return  q回相加后的日期  
             */  
           public  static  java.util.Date  addDate(java.util.Date  date,  int  day)  {  
                       java.util.Calendar  c  =  java.util.Calendar.getInstance();  
                       c.setTimeInMillis(getMillis(date)  +  ((long)  day)  *  24  *  3600  *  1000);  
                       return  c.getTime();  
           }  
 
           /**  
             *  日期相减  
             *    
             *  @param  date  
             *                        日期  
             *  @param  date1  
             *                        日期  
             *  @return  q回相减后的日期  
             */  
           public  static  int  diffDate(java.util.Date  date,  java.util.Date  date1)  {  
                       return  (int)  ((getMillis(date)  -  getMillis(date1))  /  (24  *  3600  *  1000));  
           }              
}  
---------------------------------------------------------------  
 
我来个简单点?也许有点? 
 
Calendar  now  =  Calendar.getInstance();  
int  year  =  now.get(Calendar.YEAR);  
int  date  =  now.get(Calendar.DAY_OF_MONTH);  
int  month  =  now.get(Calendar.MONTH)  +  1;  
int  hour  =  now.get(Calendar.HOUR);  
int  min  =  now.get(Calendar.MINUTE);  
int  sec  =  now.get(Calendar.SECOND); 


TNT 2006-07-19 12:15 发表评论
]]>
随机数字 点?字符串?http://www.aygfsteel.com/terrywu/articles/49465.htmlTNTTNTThu, 01 Jun 2006 02:41:00 GMThttp://www.aygfsteel.com/terrywu/articles/49465.htmlhttp://www.aygfsteel.com/terrywu/comments/49465.htmlhttp://www.aygfsteel.com/terrywu/articles/49465.html#Feedback0http://www.aygfsteel.com/terrywu/comments/commentRss/49465.htmlhttp://www.aygfsteel.com/terrywu/services/trackbacks/49465.htmlJSP中经常用到随机数字或字符(如密码?sessionid产生)可以使用taglib标签产生,本h使用bean产生随机?

1.可以产生10000000 ?99999999之间随机?/p>

2.可以产生规定数字之间的随机数,?5 100之间

3.可以使用algorithm ?provider产生一个SecureRandom随机数字或字W串
object instead of a Random object: 71

4.可以产生点点随机?

5.可以产生a-zA-Z0-9之间的规定长度个字符?/p>

6.可以产生规定长度的小写字母字W串

7.可以产生L字符?

以下jsp bean 在Tomcat Win2000 下调试通过:

/*
*
* 随机数字bean
*/

package mycollect;

import java.util.*;
import java.security.SecureRandom;
import java.security.NoSuchAlgorithmException;
import java.security.NoSuchProviderException;


public class RandomNum {

private Long randomnum = null;
private Float randomfloat = null;
private boolean floatvalue = false;
private long upper = 100;
private long lower = 0;
private String algorithm = null;
private String provider = null;
private boolean secure = false;
private Random random = null;
private SecureRandom secrandom = null;

private final float getFloat() {
if (random == null)
return secrandom.nextFloat();
else
return random.nextFloat();
}

public final void generateRandomObject() throws Exception {

// check to see if the object is a SecureRandom object
if (secure) {
try {
// get an instance of a SecureRandom object
if (provider != null)
// search for algorithm in package provider
secrandom = SecureRandom.getInstance(algorithm, provider);
else
secrandom = SecureRandom.getInstance(algorithm);
} catch (NoSuchAlgorithmException ne) {
throw new Exception(ne.getMessage());
} catch (NoSuchProviderException pe) {
throw new Exception(pe.getMessage());
}
} else
random = new Random();
}

/**
* generate the random number
*
*/
private final void generaterandom() {

int tmprandom = 0; // temp storage for random generated number
Integer rand;

// check to see if float value is expected
if (floatvalue)
randomfloat = new Float(getFloat());
else
randomnum = new Long(lower + (long) ((getFloat() * (upper - lower))));
}

public final Number getRandom() {
generaterandom();
if (floatvalue)
return randomfloat;
else
return randomnum;
}

public final void setRange(long low, long up) {

// set the upper and lower bound of the range
lower = low;
upper = up;

// check to see if a float value is expected
if ((lower == 0) && (upper == 1))
floatvalue = true;
}

/**
* set the algorithm name
*
* @param value name of the algorithm to use for a SecureRandom object
*
*/
public final void setAlgorithm(String value) {
algorithm = value;
secure = true; // a SecureRandom object is to be used
}

public final void setProvider(String value)
{
provider = value;
}

public final void setRange(String value) throws Exception
{
try
{
upper = new Integer(value.substring(value.indexOf('-') + 1)).longValue();
} catch (Exception ex) {
throw new Exception("upper attribute could not be" +
" turned into an Integer default value was used");
}

try
{
lower = new Integer(value.substring(0, value.indexOf('-'))).longValue();
} catch (Exception ex) {
throw new Exception("lower attribute could not be" +
" turned into an Integer default value was used");
}

if ((lower == 0) && (upper == 1))
floatvalue = true;

if (upper < lower)
throw new Exception("You can't have a range where the lowerbound" +
" is higher than the upperbound.");

}

}

//随机字符串bean


package mycollect;

import java.util.*;
import java.security.SecureRandom;
import java.security.NoSuchAlgorithmException;
import java.security.NoSuchProviderException;

public class RandomStrg {

private String randomstr;
private boolean allchars = false;
//Ơ缺?位字W串
private Integer length = new Integer(8);
private HashMap hmap;
private ArrayList lower = null;
private ArrayList upper = null;
private char[] single = null;
private int singlecount = 0;
private boolean singles = false;
private String algorithm = null;
private String provider = null;
private boolean secure = false;
private Random random = null;
private SecureRandom secrandom = null;

private final float getFloat() {
if (random == null)
return secrandom.nextFloat();
else
return random.nextFloat();
}

/**
* generate the Random object that will be used for this random number
* generator
*
*/
public final void generateRandomObject() throws Exception {

// check to see if the object is a SecureRandom object
if (secure) {
try {
// get an instance of a SecureRandom object
if (provider != null)
// search for algorithm in package provider
random = SecureRandom.getInstance(algorithm, provider);
else
random = SecureRandom.getInstance(algorithm);
} catch (NoSuchAlgorithmException ne) {
throw new Exception(ne.getMessage());
} catch (NoSuchProviderException pe) {
throw new Exception(pe.getMessage());
}
} else
random = new Random();
}

/**
* generate the random string
*
*/
private final void generaterandom() {

if (allchars)
for (int i = 0; i < length.intValue(); i++)
randomstr = randomstr + new Character((char)((int) 34 +
((int)(getFloat() * 93)))).toString();
else if (singles) {
// check if there are single chars to be included

if (upper.size() == 3) {
// check for the number of ranges max 3 uppercase lowercase digits

// build the random string
for (int i = 0; i < length.intValue(); i++) {
// you have four groups to choose a random number from, to make
// the choice a little more random select a number out of 100

// get a random number even or odd
if (((int) (getFloat() * 100)) % 2 == 0) {

// the number was even get another number even or odd
if (((int) (getFloat() * 100)) % 2 == 0)
// choose a random char from the single char group
randomstr = randomstr + randomSingle().toString();
else
// get a random char from the first range
randomstr = randomstr + randomChar((Character)lower.get(2),
(Character)upper.get(2)).toString();
} else {
// the number was odd

if (((int) (getFloat() * 100)) % 2 == 0)
// choose a random char from the second range
randomstr = randomstr + randomChar((Character)lower.get(1),
(Character)upper.get(1)).toString();
else
// choose a random char from the third range
randomstr = randomstr + randomChar((Character)lower.get(0),
(Character)upper.get(0)).toString();
}
}
} else if (upper.size() == 2) {
// single chars are to be included choose a random char from
// two different ranges

// build the random char from single chars and two ranges
for (int i = 0; i < length.intValue(); i++) {
// select the single chars or a range to get each random char
// from

if (((int)(getFloat() * 100)) % 2 == 0) {

// get random char from the single chars
randomstr = randomstr + randomSingle().toString();
} else if (((int) (getFloat() * 100)) % 2 == 0) {

// get the random char from the first range
randomstr = randomstr + randomChar((Character)lower.get(1),
(Character)upper.get(1)).toString();
} else {

// get the random char from the second range
randomstr = randomstr + randomChar((Character)lower.get(0),
(Character)upper.get(0)).toString();
}
}
} else if (upper.size() == 1) {

// build the random string from single chars and one range
for (int i = 0; i < length.intValue(); i++) {
if (((int) getFloat() * 100) % 2 == 0)
// get a random single char
randomstr = randomstr + randomSingle().toString();
else
// get a random char from the range
randomstr = randomstr + randomChar((Character)lower.get(0),
(Character)upper.get(0)).toString();
}
} else {
// build the rand string from single chars
for (int i = 0; i < length.intValue(); i++)
randomstr = randomstr + randomSingle().toString();
}
} else {

// no single chars are to be included in the random string
if (upper.size() == 3) {

// build random strng from three ranges
for (int i = 0; i < length.intValue(); i++) {

if (((int) (getFloat() * 100)) % 2 == 0) {

// get random char from first range
randomstr = randomstr + randomChar((Character)lower.get(2),
(Character)upper.get(2)).toString();
} else if (((int) (getFloat() * 100)) % 2 == 0) {

// get random char form second range
randomstr = randomstr + randomChar((Character)lower.get(1),
(Character)upper.get(1)).toString();
} else {

// get random char from third range
randomstr = randomstr + randomChar((Character)lower.get(0),
(Character)upper.get(0)).toString();
}
}
} else if (upper.size() == 2) {

// build random string from two ranges
for (int i = 0; i < length.intValue(); i++) {
if (((int) (getFloat() * 100)) % 2 == 0)
// get random char from first range
randomstr = randomstr + randomChar((Character)lower.get(1),
(Character)upper.get(1)).toString();
else
// get random char from second range
randomstr = randomstr + randomChar((Character)lower.get(0),
(Character)upper.get(0)).toString();
}
} else

// build random string
for (int i = 0; i < length.intValue(); i++)
// get random char from only range
randomstr = randomstr + randomChar((Character)lower.get(0),
(Character)upper.get(0)).toString();
}
}

/**
* generate a random char from the single char list
*
* @returns - a randomly selscted character from the single char list
*
*/
private final Character randomSingle() {

return (new Character(single[(int)((getFloat() * singlecount) - 1)]));
}

/**
* generate a random character
*
* @param lower lower bound from which to get a random char
* @param upper upper bound from which to get a random char
*
* @returns - a randomly generated character
*
*/
private final Character randomChar(Character lower, Character upper) {
int tempval;
char low = lower.charValue();
char up = upper.charValue();

// get a random number in the range lowlow - lowup
tempval = (int)((int)low + (getFloat() * ((int)(up - low))));

// return the random char
return (new Character((char) tempval));
}

/**
* get the randomly created string for use with the
* &lt;jsp:getProperty name=<i>"id"</i> property="randomstr"/&gt;
*
* @return - randomly created string
*
*/
public final String getRandom() {

randomstr = new String();

generaterandom(); // generate the first random string

if (hmap != null) {

while (hmap.containsKey(randomstr)) {
// random string has already been created generate a different one
generaterandom();
}

hmap.put(randomstr, null); // add the new random string
}

return randomstr;
}

/**
* set the ranges from which to choose the characters for the random string
*
* @param low set of lower ranges
* @param up set of upper ranges
*
*/
public final void setRanges(ArrayList low, ArrayList up) {
lower = low;
upper = up;
}


/**
* set the hashmap that is used to check the uniqueness of random strings
*
* @param map hashmap whose keys are used to insure uniqueness of random strgs
*
*/
public final void setHmap(HashMap map) {
hmap = map;
}

/**
* set the length of the random string
*
* @param value length of the random string
*
*/
public final void setLength(String value) {
length = new Integer(value);

}

/**
* set the algorithm name
*
* @param value name of the algorithm to use for a SecureRandom object
*
*/
public final void setAlgorithm(String value) {
algorithm = value;
secure = true; // a SecureRandom object is to be used
}

/**
* set the provider name
*
* @param value name of the package to check for the algorithm
*
*/
public final void setProvider(String value) {
provider = value;
}

/**
* set the allchars flag
*
* @param value boolean value of the allchars flag
*
*/
public final void setAllchars(boolean value) {
allchars = value;
}

/**
* set the array of single chars to choose from for this random string and the
* number of chars in the array
*
* @param chars the array of single chars
* @param value the number of single chars
*
*/
public final void setSingle(char[] chars, int value) {
single = chars; // set the array of chars
singlecount = value; // set the number of chars in array single
singles = true; // set flag that single chars are in use
}

public final void setCharset(String value)
{
// values tells the method whether or not to check for single chars
boolean more = true;

// create the arraylists to hold the upper and lower bounds for the char
// ranges
lower = new ArrayList(3);
upper = new ArrayList(3);

// user has chosen to use all possible characters in the random string
if (value.compareTo("all") == 0) {
allchars = true; // set allchars flag
// all chars are to be used so there are no single chars to sort
// through
more = false;
}else if ((value.charAt(1) == '-') && (value.charAt(0) != '\\')) {
// run through the ranges at most 3
while (more && (value.charAt(1) == '-')){

// check to make sure that the dash is not the single char
if (value.charAt(0) == '\\')
break;
else {
// add upper and lower ranges to there list
lower.add(new Character(value.charAt(0)));
upper.add(new Character(value.charAt(2)));
}

// check to see if there is more to the charset
if (value.length() <= 3)
more = false;
else
// create a new string so that the next range if there is one
// starts it
value = value.substring(3);
}
}

// if more = false there are no single chars in the charset
if (more) {

single = new char[30]; // create single

// create a set of tokens from the string of single chars
StringTokenizer tokens = new StringTokenizer(value);

while (tokens.hasMoreTokens()) {
// get the next token from the string
String token = tokens.nextToken();

if (token.length() > 1)
// char is a - add it to the list
single[singlecount++] = '-';

// add the current char to the list
single[singlecount++] = token.charAt(0);
}
}
if ((lower == null) && (single == null))
setCharset("a-zA-Z0-9");
}
}

JSP调用语句:

<%@ page contentType="text/html;charset=ISO8859_1" %>
<%@ page import="java.util.*" %>

<jsp:useBean id="RNUM" scope="page" class="mycollect.RandomNum" />
<jsp:useBean id="RSTR" scope="page" class="mycollect.RandomStrg" />

<html>
<head>
<title>随机数字 点?字符?lt;/title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
</head>

<body>
<h3>随机数字 点?字符?lt;/h3>
<%
//Random generator = new Random();
//int limit = 10;
//int randomNumber = (int)(generator.nextDouble() * limit);


out.println("<p>创徏?0000000 ?99999999之间的随机数:");
RNUM.setRange("10000000-99999999");
RNUM.generateRandomObject();
out.println("<b>"+RNUM.getRandom().intValue()+"</b>");

out.println("<p>在n 25 ?100之间创徏一个随机数:");
RNUM.setRange("25-100");
RNUM.generateRandomObject();
out.println("<b>"+RNUM.getRandom().intValue()+"</b>");

%>
<p>Create the same random number between 25 and 100, only use the <br>
algorithm and provider attributes to indicate the use of a SecureRandom<br>
object instead of a Random object:
<%
RNUM.setRange("25-100");
RNUM.setAlgorithm("SHA1PRNG");
RNUM.setProvider("SUN");
RNUM.generateRandomObject();
out.println("<b>"+RNUM.getRandom().intValue()+"</b>");

out.println("<p>Create a random float value:");
RNUM.setRange("0-1");
RNUM.generateRandomObject();
String radio= new java.text.DecimalFormat("###.##########").format(RNUM.getRandom());
out.println("<b>"+radio+"</b>");

out.println("<p>===========================================");

out.println("<p>在a-zA-Z0-9之间,也就是数字和26个字母؜合的随机字符?(Ơ缺??该功能适合创徏随机密码和sessionid)");
RSTR.setCharset("a-zA-Z0-9");
RSTR.generateRandomObject();
out.println("<b>"+RSTR.getRandom()+"</b>");


out.println("<p>Create a random string 15 lowercase letters long:");
RSTR.setCharset("a-z");
RSTR.setLength("15");
RSTR.generateRandomObject();
out.println("<b>"+RSTR.getRandom()+"</b>");

out.println("<p>Create a random string with only caps:");
RSTR.setCharset("A-Z");
RSTR.generateRandomObject();
out.println("<b>"+RSTR.getRandom()+"</b>");

out.println("<p>Create a random string 10 characters long with the charset a-fF-K ! \\ $ % # ^ - * ? notice that the - and had to be escaped with a :");
RSTR.setCharset("a-fF-K!\\$%#^-*?");
RSTR.setLength("10");
RSTR.generateRandomObject();
out.println("<b>"+RSTR.getRandom()+"</b>");


out.println("<p>Create a random string of all the characters and digits:");
RSTR.setCharset("all");
RSTR.generateRandomObject();
out.println("<b>"+RSTR.getRandom()+" </b>");

%><p>
Create the same random string of all the characters and digits, only use<br>
the algorithm and provider attributes to indicate the use of a SecureRandom<br>
object instead of a Random object:
<%
RSTR.setCharset("all");
RSTR.setAlgorithm("SHA1PRNG");
RSTR.setProvider("SUN");
RSTR.generateRandomObject();
out.println("<b>"+RSTR.getRandom()+"</b>");

%>

</body>
</html>



TNT 2006-06-01 10:41 发表评论
]]>
BASE64~码与解?http://www.aygfsteel.com/terrywu/articles/49464.htmlTNTTNTThu, 01 Jun 2006 02:40:00 GMThttp://www.aygfsteel.com/terrywu/articles/49464.htmlhttp://www.aygfsteel.com/terrywu/comments/49464.htmlhttp://www.aygfsteel.com/terrywu/articles/49464.html#Feedback0http://www.aygfsteel.com/terrywu/comments/commentRss/49464.htmlhttp://www.aygfsteel.com/terrywu/services/trackbacks/49464.html    * Encode a string using Base64 encoding. Used when storing passwords
    * as cookies.
    *
    * This is weak encoding in that anyone can use the decodeString
    * routine to reverse the encoding.
    *
    * @param str
    * @return String
    */
   public static String encodeString(String str)  {
       sun.misc.BASE64Encoder encoder = new sun.misc.BASE64Encoder();
       return encoder.encodeBuffer(str.getBytes()).trim();
   }

   /**
    * Decode a string using Base64 encoding.
    *
    * @param str
    * @return String
    */
   public static String decodeString(String str) {
       sun.misc.BASE64Decoder dec = new sun.misc.BASE64Decoder();
       try {
           return new String(dec.decodeBuffer(str));
       } catch (IOException io) {
               throw new RuntimeException(io.getMessage(), io.getCause());
       }
    }



TNT 2006-06-01 10:40 发表评论
]]>
JAVAҎ(gu)件的操作http://www.aygfsteel.com/terrywu/articles/49463.htmlTNTTNTThu, 01 Jun 2006 02:39:00 GMThttp://www.aygfsteel.com/terrywu/articles/49463.htmlhttp://www.aygfsteel.com/terrywu/comments/49463.htmlhttp://www.aygfsteel.com/terrywu/articles/49463.html#Feedback0http://www.aygfsteel.com/terrywu/comments/commentRss/49463.htmlhttp://www.aygfsteel.com/terrywu/services/trackbacks/49463.htmlpublic class FileOperate {
  public FileOperate() {
  }

  /**
   * 新徏目录
   * @param folderPath String ?c:/fqf
   * @return boolean
   */
  public void newFolder(String folderPath) {
    try {
      String filePath = folderPath;
      filePath = filePath.toString();
      java.io.File myFilePath = new java.io.File(filePath);
      if (!myFilePath.exists()) {
        myFilePath.mkdir();
      }
    }
    catch (Exception e) {
      System.out.println("新徏目录操作出错");
      e.printStackTrace();
    }
  }

  /**
   * 新徏文g
   * @param filePathAndName String 文g路径?qing)名U?如c:/fqf.txt
   * @param fileContent String 文g内容
   * @return boolean
   */
  public void newFile(String filePathAndName, String fileContent) {

    try {
      String filePath = filePathAndName;
      filePath = filePath.toString();
      File myFilePath = new File(filePath);
      if (!myFilePath.exists()) {
        myFilePath.createNewFile();
      }
      FileWriter resultFile = new FileWriter(myFilePath);
      PrintWriter myFile = new PrintWriter(resultFile);
      String strContent = fileContent;
      myFile.println(strContent);
      resultFile.close();

    }
    catch (Exception e) {
      System.out.println("新徏目录操作出错");
      e.printStackTrace();

    }

  }

  /**
   * 删除文g
   * @param filePathAndName String 文g路径?qing)名U?如c:/fqf.txt
   * @param fileContent String
   * @return boolean
   */
  public void delFile(String filePathAndName) {
    try {
      String filePath = filePathAndName;
      filePath = filePath.toString();
      java.io.File myDelFile = new java.io.File(filePath);
      myDelFile.delete();

    }
    catch (Exception e) {
      System.out.println("删除文g操作出错");
      e.printStackTrace();

    }

  }

  /**
   * 删除文g?br />   * @param filePathAndName String 文g夹\径及(qing)名称 如c:/fqf
   * @param fileContent String
   * @return boolean
   */
  public void delFolder(String folderPath) {
    try {
      delAllFile(folderPath); //删除完里面所有内?br />      String filePath = folderPath;
      filePath = filePath.toString();
      java.io.File myFilePath = new java.io.File(filePath);
      myFilePath.delete(); //删除I文件夹

    }
    catch (Exception e) {
      System.out.println("删除文gҎ(gu)作出?);
      e.printStackTrace();

    }

  }

  /**
   * 删除文g多w面的所有文?br />   * @param path String 文g夹\??c:/fqf
   */
  public void delAllFile(String path) {
    File file = new File(path);
    if (!file.exists()) {
      return;
    }
    if (!file.isDirectory()) {
      return;
    }
    String[] tempList = file.list();
    File temp = null;
    for (int i = 0; i < tempList.length; i++) {
      if (path.endsWith(File.separator)) {
        temp = new File(path + tempList[i]);
      }
      else {
        temp = new File(path + File.separator + tempList[i]);
      }
      if (temp.isFile()) {
        temp.delete();
      }
      if (temp.isDirectory()) {
        delAllFile(path+"/"+ tempList[i]);//先删除文件夹里面的文?br />        delFolder(path+"/"+ tempList[i]);//再删除空文g?br />      }
    }
  }

  /**
   * 复制单个文g
   * @param oldPath String 原文件\?如:(x)c:/fqf.txt
   * @param newPath String 复制后\?如:(x)f:/fqf.txt
   * @return boolean
   */
  public void copyFile(String oldPath, String newPath) {
    try {
      int bytesum = 0;
      int byteread = 0;
      File oldfile = new File(oldPath);
      if (oldfile.exists()) { //文g存在?br />        InputStream inStream = new FileInputStream(oldPath); //d原文?br />        FileOutputStream fs = new FileOutputStream(newPath);
        byte[] buffer = new byte[1444];
        int length;
        while ( (byteread = inStream.read(buffer)) != -1) {
          bytesum += byteread; //字节?文g大小
          System.out.println(bytesum);
          fs.write(buffer, 0, byteread);
        }
        inStream.close();
      }
    }
    catch (Exception e) {
      System.out.println("复制单个文g操作出错");
      e.printStackTrace();

    }

  }

  /**
   * 复制整个文g夹内?br />   * @param oldPath String 原文件\?如:(x)c:/fqf
   * @param newPath String 复制后\?如:(x)f:/fqf/ff
   * @return boolean
   */
  public void copyFolder(String oldPath, String newPath) {

    try {
      (new File(newPath)).mkdirs(); //如果文g夹不存在 则徏立新文g?br />      File a=new File(oldPath);
      String[] file=a.list();
      File temp=null;
      for (int i = 0; i < file.length; i++) {
        if(oldPath.endsWith(File.separator)){
          temp=new File(oldPath+file[i]);
        }
        else{
          temp=new File(oldPath+File.separator+file[i]);
        }

        if(temp.isFile()){
          FileInputStream input = new FileInputStream(temp);
          FileOutputStream output = new FileOutputStream(newPath + "/" +
              (temp.getName()).toString());
          byte[] b = new byte[1024 * 5];
          int len;
          while ( (len = input.read(b)) != -1) {
            output.write(b, 0, len);
          }
          output.flush();
          output.close();
          input.close();
        }
        if(temp.isDirectory()){//如果是子文g?br />          copyFolder(oldPath+"/"+file[i],newPath+"/"+file[i]);
        }
      }
    }
    catch (Exception e) {
      System.out.println("复制整个文g夹内Ҏ(gu)作出?);
      e.printStackTrace();

    }

  }

  /**
   * Ud文g到指定目?br />   * @param oldPath String 如:(x)c:/fqf.txt
   * @param newPath String 如:(x)d:/fqf.txt
   */
  public void moveFile(String oldPath, String newPath) {
    copyFile(oldPath, newPath);
    delFile(oldPath);

  }

  /**
   * Ud文g到指定目?br />   * @param oldPath String 如:(x)c:/fqf.txt
   * @param newPath String 如:(x)d:/fqf.txt
   */
  public void moveFolder(String oldPath, String newPath) {
    copyFolder(oldPath, newPath);
    delFolder(oldPath);

  }
}



TNT 2006-06-01 10:39 发表评论
]]>
Java.Math APIhttp://www.aygfsteel.com/terrywu/articles/49462.htmlTNTTNTThu, 01 Jun 2006 02:38:00 GMThttp://www.aygfsteel.com/terrywu/articles/49462.htmlhttp://www.aygfsteel.com/terrywu/comments/49462.htmlhttp://www.aygfsteel.com/terrywu/articles/49462.html#Feedback0http://www.aygfsteel.com/terrywu/comments/commentRss/49462.htmlhttp://www.aygfsteel.com/terrywu/services/trackbacks/49462.htmlMath.PI 记录的圆周率
Math.E&nbsp;记录e的常?br />Math中还有一些类似的帔RQ都是一些工E数学常用量?br />
Math.abs 求绝对?br />Math.sin 正u函数&nbsp;Math.asin 反正弦函?br />Math.cos 余u函数&nbsp;Math.acos 反余弦函?br />Math.tan 正切函数&nbsp;Math.atan 反正切函?amp;nbsp;Math.atan2 商的反正切函?br />Math.toDegrees 弧度转化?amp;nbsp;Math.toRadians 角度转化为弧?br />Math.ceil 得到不小于某数的最大整?br />Math.floor 得到不大于某数的最大整?br />Math.IEEEremainder 求余
Math.max 求两C最?br />Math.min 求两C最?br />Math.sqrt 求开?br />Math.pow 求某数的Lơ方, 抛出ArithmeticException处理溢出异常
Math.exp 求e的Q意次?br />Math.log10 ?0为底的对?br />Math.log 自然Ҏ(gu)
Math.rint 求距L数最q的整数Q可能比某数大,也可能比它小Q?br />Math.round 同上Q返回int型或者long型(上一个函数返回double型)
Math.random q回0Q?之间的一个随机数

TNT 2006-06-01 10:38 发表评论
]]>
վ֩ģ壺 | | ̨| | ʹ| ͨ| ǭ| ɽ| | | | | ɽ| | ʳ| Ů| | ߱| ȫ| | Ȫ| ȳ| 㽭ʡ| ˮ| ̫| ׼| ¬| | ־| ˮ| ²| ɽ| ʯ| н| | ׿| | | | | |