Java 如何在不使用文件的情况下创建胡子?

Java 如何在不使用文件的情况下创建胡子?,java,mustache,Java,Mustache,我有一个字符串保存在某处的模板,我想用它创建胡子。我该怎么做?或者它可行吗?如果您使用FileWriter(或其他一些类)将该字符串存储到文件中,并保留扩展名.mustache,那么您应该能够关闭并使用该文件。我很快就想出了一个办法(可能行不通): 编辑:我误读了标题。您可以创建一个临时文件,然后稍后将其删除 资料来源: 以下是我找到的方法: private String renderMustacheContent() throws IOException { MustacheFact

我有一个字符串保存在某处的模板,我想用它创建胡子。我该怎么做?或者它可行吗?

如果您使用FileWriter(或其他一些类)将该字符串存储到文件中,并保留扩展名.mustache,那么您应该能够关闭并使用该文件。我很快就想出了一个办法(可能行不通):

编辑:我误读了标题。您可以创建一个临时文件,然后稍后将其删除

资料来源:


以下是我找到的方法:

private String renderMustacheContent() throws IOException {
    MustacheFactory mf = new DefaultMustacheFactory();
    Mustache mustache;

    if (type.getTemplate().trim().isEmpty()) {            
        String emailContent = genCpuEmailContent(cmsKey);
        mustache = mf.compile(new StringReader(emailContent), "cpu.template.email");
    } else {
        mustache = mf.compile(type.getTemplate());
    }

    StringWriter writer = new StringWriter();
    mustache.execute(writer, values).flush();

    return writer.toString();
}

因此,基本上,当您只想从字符串模板而不是文件中呈现电子邮件时,只需使用该模板创建新的StringReader。

这对于本应简单的事情来说太难了。写入文件可能会降低系统性能。我认为StringReader解决方案更好。这里的
type
是什么?只是一个包含模板元数据的枚举类;;ie有些有模板,有些没有,可能有模板文件名
private String renderMustacheContent() throws IOException {
    MustacheFactory mf = new DefaultMustacheFactory();
    Mustache mustache;

    if (type.getTemplate().trim().isEmpty()) {            
        String emailContent = genCpuEmailContent(cmsKey);
        mustache = mf.compile(new StringReader(emailContent), "cpu.template.email");
    } else {
        mustache = mf.compile(type.getTemplate());
    }

    StringWriter writer = new StringWriter();
    mustache.execute(writer, values).flush();

    return writer.toString();
}