Quantcast
Channel: プログラム の個人的なメモ
Viewing all articles
Browse latest Browse all 860

【Java】【Velocity】JARファイル内のリソースファイルを開いてApache Velocityを使って文字列取得

$
0
0

■ はじめに

https://blogs.yahoo.co.jp/dk521123/37497699.html
で、JARファイル内のリソースファイルのパスは
「jar:file:/C:/XXXX/SampleDemo-1.0.0.jar!/Sample.vm」のようになる。
しかし、直接ストリームとしてオープンすることは可能なので
そのサンプルを書く

■ サンプル

JarOpenDemo.java

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.StringWriter;

import org.apache.velocity.VelocityContext;
import org.apache.velocity.app.Velocity;

public class JarOpenDemo {
  public static void main(String[] args) {
    try (InputStream inputStream = JarOpenDemo.class.getClass()
        .getResourceAsStream("/mail/templates/sample.vm");) {
      String fileText = toString(inputStream);
      System.out.println("File Content : " + fileText);

      // Using Velocity
      Velocity.init();
      VelocityContext context = new VelocityContext();
      context.put("name", "Mike");
      try (StringWriter stringWriter = new StringWriter();) {
        Velocity.evaluate(context, stringWriter, "Demo", fileText);
        System.out.println("Result : " + stringWriter.toString());
      }
    } catch (Exception ex) {
      ex.printStackTrace();
    }
  }

  public static String toString(InputStream inputStream) throws IOException {
    if (inputStream == null) {
      return null;
    }

    try (BufferedReader bufferedReader = new BufferedReader(
        new InputStreamReader(inputStream));) {
      StringBuilder stringBuilder = new StringBuilder();

      String line;
      while ((line = bufferedReader.readLine()) != null) {
        stringBuilder.append(line);
      }
      return stringBuilder.toString();
    }
  }
}

/mail/templates/sample.vm

Hello World, $name

出力結果

File Content : Hello World, $name
Result : Hello World, Mike


関連記事

Java での リソース の扱いについて

https://blogs.yahoo.co.jp/dk521123/37497699.html

Apache Velocity ~入門編~

https://blogs.yahoo.co.jp/dk521123/34456704.html

Viewing all articles
Browse latest Browse all 860

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>