深蓝计划之java freemarker 工具类
虾米哥
阅读:575
2021-03-31 21:43:50
评论:0
package com.shop.ssm.util;
/**
* Created by Administrator on 2016.9.1.
*/
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 模版引擎类
* 创建人:周志刚
* 创建时间:2016年9月1日
* @version
*/
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.getClasspath() + 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(); //通过Freemaker的Configuration读取相应的ftl
cfg.setEncoding(Locale.CHINA, "utf-8");
cfg.setDirectoryForTemplateLoading(new File(PathUtil.getClassResources()+"/ftl/"+ftlPath)); //设定去哪里读取相应的ftl模板文件
Template temp = cfg.getTemplate(ftlName); //在模板文件目录中找到名称为name的文件
return temp;
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
}
声明
1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。