首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

模板跟回调模式

2012-08-31 
模板和回调模式package xxximport java.io.Fileimport java.io.FileNotFoundExceptionimport java.io.F

模板和回调模式

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();    }}

?

热点排行