1. 程式人生 > >Java獲取資源路徑下的檔案、模板

Java獲取資源路徑下的檔案、模板

工作時有個需求是需要傳送html格式的郵件,這裡我們不討論發郵件的事,而是講一講如何從java專案的資源路徑下獲取自定義的資原始檔或者模板。我這裡是需要獲取html檔案的內容,並替換其中的資訊,傳送html格式的郵件。

HTML檔案內容如下:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<div>Channel:%s</div>
<div>AppKey:%s</div>
<div>AppSecret:%s</div>
<div>Version:%s</div>
<br>
<div style="color:#BBBBBB;font-size:15px;">------該郵件由系統傳送,請勿回覆!------</div>
</body>
</html>

資源路徑結構如下:

然後就是java程式碼了:

import org.springframework.core.io.ClassPathResource;
import org.springframework.stereotype.Component;

import javax.annotation.PostConstruct;
import java.io.IOException;
import java.io.InputStream;

/**
 * @Author wangdl
 * @Date 2018/12/20 15:15
 * @Description 郵件模板
 */
@Component
public class EmailTemplate {

    public static String ADVANCE_TITLE = "提醒通知:介面金鑰即將更新";
    public static String FORMAL_TITLE = "正式通知:介面金鑰更新";
    public static String ADD_TITLE = "新增通知:新增渠道金鑰已生成";
    public static String ADVANCE_CONTENT = "";
    public static String FORMAL_CONTENT = "";
    public static String ADD_CONTENT = "";

    @PostConstruct
    public void loadNotice(){
        this.load("template/advanceNotice.html", "advance");
        this.load("template/formalNotice.html", "formal");
        this.load("template/addNotice.html", "add");
    }

    /**
     * 載入模板
     * @param path
     * @param type
     */
    private void load(String path, String type){
        try {
            InputStream inputStream = new ClassPathResource(path).getInputStream();
            StringBuffer out = new StringBuffer();
            byte[] b = new byte[4096];
            for (int n; (n = inputStream.read(b)) != -1;) {
                out.append(new String(b, 0, n));
            }
            if (type.equals("advance"))
                ADVANCE_CONTENT = out.toString();
            if (type.equals("formal"))
                FORMAL_CONTENT = out.toString();
            if (type.equals("add"))
                ADD_CONTENT = out.toString();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

通過上面的程式碼,就可以在專案啟動的時候載入自定義的模板內容,我們可以通過String.format(ADD_CONTENT, arg1, arg2)這種形式去替換為指定的內容。平時的一點記錄,希望可以幫到需要的人。