码迷,mamicode.com
首页 > 其他好文 > 详细

Freemarker工具类

时间:2014-09-11 20:50:42      阅读:216      评论:0      收藏:0      [点我收藏+]

标签:style   blog   color   io   os   java   ar   for   文件   

Freemarker文件模板工具类

提供了解析生成文件、解析生成字符串的两个方法!

package org.lunatic.util;

import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.io.StringWriter;
import java.util.Map;

import freemarker.template.Configuration;
import freemarker.template.Template;
import freemarker.template.TemplateException;



public class FreemarkerUtil {
    
    private static final Integer TEMPLATE_LOADING_FILE = 1;
    private static final Integer TEMPLATE_LOADING_PROJECT = 2;
    private static Configuration freemarkerConfig;
    
    static{
        try {
            initConfig(TEMPLATE_LOADING_FILE, "E:/Lunatic/workspaces/FreemarkerDemo/ftl");
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    
    /**
     * 初始化Freemarker参数配置
     * @param type 模板文件夹路径类型,1:文件系统路径;2:项目路径
     * @param dir 模板文件夹路径,当type=1时,文件系统中的绝对路径;当type=2时,项目中相对路径,与src同级开始,以"/开头"
     * @throws Exception 
     */
    public static void initConfig(Integer type,String dir) throws Exception{
        /**
         * 通过Freemaker的Configuration读取相应的ftl,配置Freemarker模板参数信息
         */
        freemarkerConfig = new Configuration();
        /**
         * 设置模板本件夹路径:
         * 1、setDirectoryForTemplateLoading,文件系统绝对路径
         * 2、setClassForTemplateLoading项目相对路径
         */
        if(TEMPLATE_LOADING_FILE == type){
            try {
                freemarkerConfig.setDirectoryForTemplateLoading(new File(dir));
            } catch (IOException e) {
                throw new Exception("设置模板文件夹异常",e);
            }            
            
        }
        if(TEMPLATE_LOADING_PROJECT == type){
            freemarkerConfig.setClassForTemplateLoading(FreemarkerUtil.class,dir);
        }
    }

    /**
     * 获取Freemarker模板文件
     * @param name 文件名
     * @return
     */
    public static Template getTemplate(String name) {
        Template temp = null;
        try {
            temp = freemarkerConfig.getTemplate(name,"UTF-8");
        } catch (IOException e) {
            e.printStackTrace();
        }
        return temp;
        
    }
    
    /**
     * 将解析之后的文件内容保存到文件中
     * @param name 模板文件名
     * @param root 数据Map
     * @param outFile 保存文件路径
     */
    public static void printFile(String name,Map<String,Object> root,String outFile) {
        FileWriter out = null;
        try {
            //通过一个文件输出流,就可以写到相应的文件中
            out = new FileWriter(new File(outFile));
            Template temp = getTemplate(name);
            temp.process(root, out);
        } catch (IOException e) {
            e.printStackTrace();
        } catch (TemplateException e) {
            e.printStackTrace();
        } finally {
            try {
                if(out!=null) out.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
    
    /**
     * 将解析之后的文件内容返回字符串
     * @param name 模板文件名
     * @param root 数据Map
     * @return
     */
    public static String printString(String name,Map<String,Object> root) {
        StringWriter out = new StringWriter();
        try {
            //通过一个文件输出流,就可以写到相应的文件中
            Template temp = getTemplate(name);
            temp.process(root, out);
        } catch (IOException e) {
            e.printStackTrace();
        } catch (TemplateException e) {
            e.printStackTrace();
        } finally {
            try {
                if(out!=null) out.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        return out.toString();
    }
    
    /**
     * 将解析之后的文件内容打印在控制台
     * @param name 模板文件名
     * @param root 数据Map
     */
    public static void printConsole(String name,Map<String,Object> root) {
        System.out.println(printString(name, root));
    }
    
    
}

 

Freemarker工具类

标签:style   blog   color   io   os   java   ar   for   文件   

原文地址:http://www.cnblogs.com/lunatic/p/FreemarkerUtil.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!