DarkMeteor 发表于 2013-2-3 11:20:11

模板和回调模式

package xxx;import java.io.File;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;import java.io.OutputStream;import com.xxx.common.logging.Logger;import com.xxx.common.logging.LoggerFactory;/** * 文件模板工具类 ** @author xu.le * @version $Id: FileTemplate.java,v 0.1 2010-9-8 上午10:38:23 xu.le Exp $ */public class FileTemplate {            private static final Logger logger = LoggerFactory.getLogger(FileTemplate.class);    /**   *      *      * @param buffer   * @param baseDir   * @param fileName   */    public static void upload(final byte[] buffer, final String baseDir, final String fileName) {      executeTemplate(new CallBack() {            public OutputStream callBack() {                File file = new File(baseDir, fileName);                File parent = file.getParentFile();                if (!parent.exists()) {                  parent.mkdirs();                  if (logger.isInfoEnabled()) {                        logger.info("尝试创建目录:");                  }                }                if (!file.exists()) {                  OutputStream out = null;                  try {                        out = new FileOutputStream(file);                        out.write(buffer);                  } catch (FileNotFoundException e) {                        if (logger.isInfoEnabled()) {                            logger.info("文件无法找到异常", e);                        }                  } catch (IOException e) {                        if (logger.isInfoEnabled()) {                            logger.info("文件写入异常", e);                        }                  } catch (Exception e) {                        e.printStackTrace();                  }                  return out;                }                if (logger.isInfoEnabled()) {                  logger.info("文件已经存在,不重新生成,文件为" + file);                }                return null;            }      });    }    /**   *      * @param callBack   */    private static void executeTemplate(CallBack callBack) {      OutputStream out = callBack.callBack();      if (out != null) {            try {                out.close();            } catch (IOException e) {                if (logger.isInfoEnabled()) {                  logger.info("OutputStream close error!", e);                }            }      }    }    /**   *      * @author xu.le   * @version $Id: CallBack.java,v 0.1 2010-9-8 上午10:41:50 xu.le Exp $   */    private interface CallBack {      public OutputStream callBack();    }} 
页: [1]
查看完整版本: 模板和回调模式