模板跟回调模式
模板和回调模式
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(); } }