content: package com.vua.common.util;
  
  import org.apache.commons.io.output.FileWriterWithEncoding;
  import org.apache.commons.lang.StringUtils;
  import org.apache.velocity.Template;
  import org.apache.velocity.VelocityContext;
  import org.apache.velocity.app.Velocity;
  import org.apache.velocity.app.VelocityEngine;
  
  import java.io.File;
  import java.util.Properties;
  
  /**
   * Created by liunian on 6/19/17.
   */
  public class VelocityUtil {
      /**
       * 根据模板生成文件
       * @param inputVmFilePath 模板路径
       * @param outputFilePath 输出文件路径
       * @param context
       * @throws Exception
       */
      public static void generate(String inputVmFilePath, String outputFilePath, VelocityContext context) throws Exception {
          try {
              Properties properties = new Properties();
              properties.setProperty(VelocityEngine.FILE_RESOURCE_LOADER_PATH, getPath(inputVmFilePath));
              Velocity.init(properties);
              //VelocityEngine engine = new VelocityEngine();
              Template template = Velocity.getTemplate(getFile(inputVmFilePath), "utf-8");
              File outputFile = new File(outputFilePath);
              FileWriterWithEncoding writer = new FileWriterWithEncoding(outputFile, "utf-8");
              template.merge(context, writer);
              writer.close();
          } catch (Exception ex) {
              throw ex;
          }
      }
  
      /**
       * 根据文件绝对路径获取目录
       * @param filePath
       * @return
       */
      public static String getPath(String filePath) {
          String path = "";
          if (StringUtils.isNotBlank(filePath)) {
              path = filePath.substring(0, filePath.lastIndexOf("/") + 1);
          }
          return path;
      }
  
      /**
       * 根据文件绝对路径获取文件
       * @param filePath
       * @return
       */
      public static String getFile(String filePath) {
          String file = "";
          if (StringUtils.isNotBlank(filePath)) {
              file = filePath.substring(filePath.lastIndexOf("/") + 1);
          }
          return file;
      }
  }
  