Chinaunix首页 | 论坛 | 博客
  • 博客访问: 604397
  • 博文数量: 298
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 3077
  • 用 户 组: 普通用户
  • 注册时间: 2019-06-17 10:57
文章分类

全部博文(298)

文章存档

2022年(96)

2021年(201)

2019年(1)

我的朋友

分类: Java

2022-01-07 11:57:10


点击(此处)折叠或打开


  1. package org.fh.util;

  2. import java.io.BufferedWriter;
  3. import java.io.File;
  4. import java.io.FileOutputStream;
  5. import java.io.IOException;
  6. import java.io.OutputStreamWriter;
  7. import java.io.PrintWriter;
  8. import java.io.Writer;
  9. import java.util.Locale;
  10. import java.util.Map;

  11. import freemarker.template.Configuration;
  12. import freemarker.template.Template;
  13. import freemarker.template.TemplateException;

  14. /**
  15.  * 说明:Freemarker 模版引擎类
  16.  * 作者:FH Admin
  17.  * from:fhadmin.cn
  18.  */
  19. public class Freemarker {

  20.     /**
  21.      * 打印到控制台(测试用)
  22.      * @param ftlName
  23.      */
  24.     public static void print(String ftlName, Map<String,Object> root, String ftlPath) throws Exception{
  25.         try {
  26.             Template temp = getTemplate(ftlName, ftlPath);        //通过Template可以将模板文件输出到相应的流
  27.             temp.process(root, new PrintWriter(System.out));
  28.         } catch (TemplateException e) {
  29.             e.printStackTrace();
  30.         } catch (IOException e) {
  31.             e.printStackTrace();
  32.         }
  33.     }
  34.     
  35.     /**
  36.      * 输出到输出到文件
  37.      * @param ftlName ftl文件名
  38.      * @param root        传入的map
  39.      * @param outFile    输出后的文件全部路径
  40.      * @param filePath    输出前的文件上部路径
  41.      */
  42.     public static void printFile(String ftlName, Map<String,Object> root, String outFile, String filePath, String ftlPath) throws Exception{
  43.         try {
  44.             File file = new File(PathUtil.getProjectpath() + filePath + outFile);
  45.             if(!file.getParentFile().exists()){                //判断有没有父路径,就是判断文件整个路径是否存在
  46.                 file.getParentFile().mkdirs();                //不存在就全部创建
  47.             }
  48.             Writer out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(file), "utf-8"));
  49.             Template template = getTemplate(ftlName, ftlPath);
  50.             template.process(root, out);                    //模版输出
  51.             out.flush();
  52.             out.close();
  53.         } catch (TemplateException e) {
  54.             e.printStackTrace();
  55.         } catch (IOException e) {
  56.             e.printStackTrace();
  57.         }
  58.     }
  59.     
  60.     /**
  61.      * 通过文件名加载模版
  62.      * @param ftlName
  63.      */
  64.     public static Template getTemplate(String ftlName, String ftlPath) throws Exception{
  65.         try {
  66.             Configuration cfg = new Configuration(Configuration.VERSION_2_3_23);                                 //通过Freemaker的Configuration读取相应的ftl
  67.             cfg.setEncoding(Locale.CHINA, "utf-8");
  68.             cfg.setDirectoryForTemplateLoading(new File(PathUtil.getProjectpath()+"/admin/template/ftl/"+ftlPath));        //设定去哪里读取相应的ftl模板文件
  69.             Template temp = cfg.getTemplate(ftlName);                                                            //在模板文件目录中找到名称为name的文件
  70.             return temp;
  71.         } catch (IOException e) {
  72.             e.printStackTrace();
  73.         }
  74.         return null;
  75.     }
  76. }


阅读(637) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~