Java獲取資源路徑下的檔案、模板
阿新 • • 發佈:2018-12-31
工作時有個需求是需要傳送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)這種形式去替換為指定的內容。平時的一點記錄,希望可以幫到需要的人。