| package com.baidu.ueditor; | 
|   | 
| import java.text.SimpleDateFormat; | 
| import java.util.Date; | 
| import java.util.regex.Matcher; | 
| import java.util.regex.Pattern; | 
|   | 
| public class PathFormat { | 
|      | 
|     private static final String TIME = "time"; | 
|     private static final String FULL_YEAR = "yyyy"; | 
|     private static final String YEAR = "yy"; | 
|     private static final String MONTH = "mm"; | 
|     private static final String DAY = "dd"; | 
|     private static final String HOUR = "hh"; | 
|     private static final String MINUTE = "ii"; | 
|     private static final String SECOND = "ss"; | 
|     private static final String RAND = "rand"; | 
|      | 
|     private static Date currentDate = null; | 
|      | 
|     public static String parse ( String input ) { | 
|          | 
|         Pattern pattern = Pattern.compile( "\\{([^\\}]+)\\}", Pattern.CASE_INSENSITIVE  ); | 
|         Matcher matcher = pattern.matcher(input); | 
|          | 
|         PathFormat.currentDate = new Date(); | 
|          | 
|         StringBuffer sb = new StringBuffer(); | 
|          | 
|         while ( matcher.find() ) { | 
|              | 
|             matcher.appendReplacement(sb, PathFormat.getString( matcher.group( 1 ) ) ); | 
|              | 
|         } | 
|          | 
|         matcher.appendTail(sb); | 
|          | 
|         return sb.toString(); | 
|     } | 
|      | 
|     /** | 
|      * 格式化路径, 把windows路径替换成标准路径 | 
|      * @param input 待格式化的路径 | 
|      * @return 格式化后的路径 | 
|      */ | 
|     public static String format ( String input ) { | 
|          | 
|         return input.replace( "\\", "/" ); | 
|          | 
|     } | 
|   | 
|     public static String parse ( String input, String filename ) { | 
|      | 
|         Pattern pattern = Pattern.compile( "\\{([^\\}]+)\\}", Pattern.CASE_INSENSITIVE  ); | 
|         Matcher matcher = pattern.matcher(input); | 
|         String matchStr = null; | 
|          | 
|         PathFormat.currentDate = new Date(); | 
|          | 
|         StringBuffer sb = new StringBuffer(); | 
|          | 
|         while ( matcher.find() ) { | 
|              | 
|             matchStr = matcher.group( 1 ); | 
|             if ( matchStr.indexOf( "filename" ) != -1 ) { | 
|                 filename = filename.replace( "$", "\\$" ).replaceAll( "[\\/:*?\"<>|]", "" ); | 
|                 matcher.appendReplacement(sb, filename ); | 
|             } else { | 
|                 matcher.appendReplacement(sb, PathFormat.getString( matchStr ) ); | 
|             } | 
|              | 
|         } | 
|          | 
|         matcher.appendTail(sb); | 
|          | 
|         return sb.toString(); | 
|     } | 
|          | 
|     private static String getString ( String pattern ) { | 
|          | 
|         pattern = pattern.toLowerCase(); | 
|          | 
|         // time 处理 | 
|         if ( pattern.indexOf( PathFormat.TIME ) != -1 ) { | 
|             return PathFormat.getTimestamp(); | 
|         } else if ( pattern.indexOf( PathFormat.FULL_YEAR ) != -1 ) { | 
|             return PathFormat.getFullYear(); | 
|         } else if ( pattern.indexOf( PathFormat.YEAR ) != -1 ) { | 
|             return PathFormat.getYear(); | 
|         } else if ( pattern.indexOf( PathFormat.MONTH ) != -1 ) { | 
|             return PathFormat.getMonth(); | 
|         } else if ( pattern.indexOf( PathFormat.DAY ) != -1 ) { | 
|             return PathFormat.getDay(); | 
|         } else if ( pattern.indexOf( PathFormat.HOUR ) != -1 ) { | 
|             return PathFormat.getHour(); | 
|         } else if ( pattern.indexOf( PathFormat.MINUTE ) != -1 ) { | 
|             return PathFormat.getMinute(); | 
|         } else if ( pattern.indexOf( PathFormat.SECOND ) != -1 ) { | 
|             return PathFormat.getSecond(); | 
|         } else if ( pattern.indexOf( PathFormat.RAND ) != -1 ) { | 
|             return PathFormat.getRandom( pattern ); | 
|         } | 
|          | 
|         return pattern; | 
|          | 
|     } | 
|   | 
|     private static String getTimestamp () { | 
|         return System.currentTimeMillis() + ""; | 
|     } | 
|      | 
|     private static String getFullYear () { | 
|         return new SimpleDateFormat( "yyyy" ).format( PathFormat.currentDate ); | 
|     } | 
|      | 
|     private static String getYear () { | 
|         return new SimpleDateFormat( "yy" ).format( PathFormat.currentDate ); | 
|     } | 
|      | 
|     private static String getMonth () { | 
|         return new SimpleDateFormat( "MM" ).format( PathFormat.currentDate ); | 
|     } | 
|      | 
|     private static String getDay () { | 
|         return new SimpleDateFormat( "dd" ).format( PathFormat.currentDate ); | 
|     } | 
|      | 
|     private static String getHour () { | 
|         return new SimpleDateFormat( "HH" ).format( PathFormat.currentDate ); | 
|     } | 
|      | 
|     private static String getMinute () { | 
|         return new SimpleDateFormat( "mm" ).format( PathFormat.currentDate ); | 
|     } | 
|      | 
|     private static String getSecond () { | 
|         return new SimpleDateFormat( "ss" ).format( PathFormat.currentDate ); | 
|     } | 
|      | 
|     private static String getRandom ( String pattern ) { | 
|          | 
|         int length = 0; | 
|         pattern = pattern.split( ":" )[ 1 ].trim(); | 
|          | 
|         length = Integer.parseInt( pattern ); | 
|          | 
|         return ( Math.random() + "" ).replace( ".", "" ).substring( 0, length ); | 
|          | 
|     } | 
|   | 
|     public static void main(String[] args) { | 
|         // TODO Auto-generated method stub | 
|   | 
|     } | 
|   | 
| } |