package org.fh.util; | |
import java.io.BufferedWriter; | |
import java.io.File; | |
import java.io.FileOutputStream; | |
import java.io.IOException; | |
import java.io.OutputStreamWriter; | |
import java.io.PrintWriter; | |
import java.io.Writer; | |
import java.util.Locale; | |
import java.util.Map; | |
import freemarker.template.Configuration; | |
import freemarker.template.Template; | |
import freemarker.template.TemplateException; | |
/** | |
* 说明:Freemarker 模版引擎类 | |
* 作者:FH Admin | |
* from:fhadmin.cn | |
*/ | |
public class Freemarker { | |
/** | |
* 打印到控制台(测试用) | |
* @param ftlName | |
*/ | |
public static void print(String ftlName, Map<String,Object> root, String ftlPath) throws Exception{ | |
try { | |
Template temp = getTemplate(ftlName, ftlPath); //通过Template可以将模板文件输出到相应的流 | |
temp.process(root, new PrintWriter(System.out)); | |
} catch (TemplateException e) { | |
e.printStackTrace(); | |
} catch (IOException e) { | |
e.printStackTrace(); | |
} | |
} | |
/** | |
* 输出到输出到文件 | |
* @param ftlName ftl文件名 | |
* @param root 传入的map | |
* @param outFile 输出后的文件全部路径 | |
* @param filePath 输出前的文件上部路径 | |
*/ | |
public static void printFile(String ftlName, Map<String,Object> root, String outFile, String filePath, String ftlPath) throws Exception{ | |
try { | |
File file = new File(PathUtil.getProjectpath() + filePath + outFile); | |
if(!file.getParentFile().exists()){ //判断有没有父路径,就是判断文件整个路径是否存在 | |
file.getParentFile().mkdirs(); //不存在就全部创建 | |
} | |
Writer out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(file), "utf-8")); | |
Template template = getTemplate(ftlName, ftlPath); | |
template.process(root, out); //模版输出 | |
out.flush(); | |
out.close(); | |
} catch (TemplateException e) { | |
e.printStackTrace(); | |
} catch (IOException e) { | |
e.printStackTrace(); | |
} | |
} | |
/** | |
* 通过文件名加载模版 | |
* @param ftlName | |
*/ | |
public static Template getTemplate(String ftlName, String ftlPath) throws Exception{ | |
try { | |
Configuration cfg = new Configuration(Configuration.VERSION_2_3_23); //通过Freemaker的Configuration读取相应的ftl | |
cfg.setEncoding(Locale.CHINA, "utf-8"); | |
cfg.setDirectoryForTemplateLoading(new File(PathUtil.getProjectpath()+"/admin/template/ftl/"+ftlPath)); //设定去哪里读取相应的ftl模板文件 | |
Template temp = cfg.getTemplate(ftlName); //在模板文件目录中找到名称为name的文件 | |
return temp; | |
} catch (IOException e) { | |
e.printStackTrace(); | |
} | |
return null; | |
} | |
} |
java Freemarker 模版引擎工具类
Java
356
0
0
2022-08-15
登录后可点赞和收藏
登录后可点赞和收藏