出错的文件package com.firstfreeer;
import java.io.*;
import java.util.HashMap; 
import java.util.Map; import org.apache.commons.logging.Log; 
import org.apache.commons.logging.LogFactory; 
import freeer.template.*; 
/*
* Created on 2005-4-7 
 * 
 */ 
  
/** 
 * 测试FreeMarker. 
 * 
 * @author scud 
 * 
 */ 
public class FreeMarkerTest 

  
        private final Log logger = LogFactory.getLog(getClass()); 
        
        private Configuration freeer_cfg = null; 
        
        
        
        public static void main(String[] args) 
        { 
            //@todo 自己的一个类 
            NewsItem aItem = null; 
            
            //@todo 装入新闻 
            //NewsItem = loadNewsItem(1); 
                
            FreeMarkerTest test = new FreeMarkerTest();  
            
            Map root = new HashMap(); 
            root.put("newsitem", aItem); 
  
            String sGeneFilePath = "/tpxw/"; 
            
            String sFileName = "1.htm"; 
  
             boolean bOK = test.geneHtmlFile("/tpxw/view.ftl",root, sGeneFilePath,sFileName);   
        } 
        
  
        /** 
         * 获取freeer的配置. freeer本身支持classpath,目录和从ServletContext获取. 
         */ 
        protected Configuration getFreeMarkerCFG() 
        { 
            if (null == freeer_cfg) 
            { 
                // Initialize the FreeMarker configuration; 
                // - Create a configuration instance 
                freeer_cfg = new Configuration(); 
  
                // - FreeMarker支持多种模板装载方式,可以查看API文档,都很简单:路径,根据Servlet上下文,classpath等等 
                
                //htmlskin是放在classpath下的一个目录 
                freeer_cfg.setClassForTemplateLoading(this.getClass(), "/htmlskin"); 
            } 
            
            return freeer_cfg; 
        } 
  
        /** 
         * 生成静态文件. 
         * 
         * @param templateFileName 模板文件名,相对htmlskin路径,例如"/tpxw/view.ftl" 
         * @param propMap 用于处理模板的属性Object映射 
         * @param htmlFilePath 要生成的静态文件的路径,相对设置中的根路径,例如 "/tpxw/1/2005/4/" 
         * @param htmlFileName 要生成的文件名,例如 "1.htm" 
         */ 
        public boolean geneHtmlFile(String templateFileName,Map propMap, String htmlFilePath,String htmlFileName ) 
        { 
               //@todo 从配置中取得要静态文件存放的根路径:需要改为自己的属性类调用 
            String sRootDir = "F:/HTML/st97/myweb" ; 
            
            try 
            { 
                Template t = getFreeMarkerCFG().getTemplate(templateFileName); 
  
                //如果根路径存在,则递归创建子目录 
                creatDirs(sRootDir,htmlFilePath); 
                
                File afile = new File(sRootDir +"/" +htmlFilePath + "/" + htmlFileName); 
  
                Writer out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(afile))); 
  
                t.process(propMap, out); 
            } 
            catch (TemplateException e) 
            { 
                logger.error("Error while processing FreeMarker template " + templateFileName,e); 
                return false; 
            } 
            catch (IOException e) 
            { 
                logger.error("Error while generate Static Html File " + htmlFileName,e); 
                return false; 
            } 
  
            return true; 
        }         public static boolean creatDirs(String aParentDir, String aSubDir) 
        { 
            File aFile = new File(aParentDir); 
            if (aFile.exists()) 
            { 
                File aSubFile = new File(aParentDir + aSubDir); 
                if (!aSubFile.exists()) 
                { 
                    return aSubFile.mkdirs(); 
                } 
                else 
                { 
                    return true; 
                } 
            } 
            else 
            { 
                return false; 
            } 
        }    
}