FileWriter在Java中写入多个文件的问题
Posted
技术标签:
【中文标题】FileWriter在Java中写入多个文件的问题【英文标题】:Problem with FileWriter into multiple files in Java 【发布时间】:2011-05-21 03:50:47 【问题描述】:我正在使用 java 和 freemarker 通过 FTL(模板文件)和 XML 生成 html 文件。我在多个文件中得到了结果,但每个文件都包含整个结果。我希望每个文件都包含自己的结果。为了给你更多的细节,看看我的java代码的这一部分:(解决方案应该很简单,但我找不到)
static void freemarkerDo(Map datamodel, String template) throws Exception
try
File file = new File("Avis.xml");
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = dbf.newDocumentBuilder();
Document doc = db.parse(file);
doc.getDocumentElement().normalize();
NodeList nodeLst = doc.getElementsByTagName("Avis");
Configuration cfg = new Configuration();
Template tpl = cfg.getTemplate(template);
for (int s = 0; s < nodeLst.getLength(); s++)
Node fstNode = nodeLst.item(s);
if (fstNode.getNodeType() == Node.ELEMENT_NODE)
Element fstElmnt = (Element) fstNode;
NodeList flNmElmntLst = fstElmnt.getElementsByTagName("Filename");
Element flNmElmnt = (Element) flNmElmntLst.item(0);
NodeList flNm = flNmElmnt.getChildNodes();
FileWriter writer = new FileWriter(((Node) flNm.item(0)).getNodeValue()+".html");
try
tpl.process(datamodel, writer);
finally
writer.close();
catch (Exception e)
e.printStackTrace();
感谢您的帮助。
【问题讨论】:
我对你想要做什么感到很困惑。你是什么意思你想要每个文件都有自己的结果?每个文件都应该有自己的数据模型吗? 【参考方案1】:我不知道此方法的作用或数据模型的设置位置,但在我看来,您正在传递整个数据模型,因此这可以解释为什么您在每个文件中都有整个数据模型。
tpl.process(datamodel, writer); // does what, with what?
调试代码时你看到了什么?
【讨论】:
此方法使用freemarker处理模板并生成结果。 tpl.process(数据模型,作家);这将模板与数据模型合并 是的,但在您的代码中,它始终是同一个模板。相同的模板 + 相同的数据模型 = 相同的结果。以上是关于FileWriter在Java中写入多个文件的问题的主要内容,如果未能解决你的问题,请参考以下文章