靜态化檔案位置注意:
<a href="https://s3.51cto.com/wyfs02/M00/A4/FF/wKioL1m2KwSD3R_pAAAjiwpj0zM659.png" target="_blank"></a>
實體類定義:
<code>public</code> <code>class</code> <code>News {</code>
<code> </code><code>private</code> <code>String title;</code>
<code> </code><code>private</code> <code>String pubTime;</code>
<code> </code><code>private</code> <code>String category;</code>
<code> </code><code>private</code> <code>String newsContent;</code>
<code> </code>
<code> </code><code>public</code> <code>String getTitle() {</code>
<code> </code><code>return</code> <code>title;</code>
<code> </code><code>}</code>
<code> </code><code>public</code> <code>void</code> <code>setTitle(String title) {</code>
<code> </code><code>this</code><code>.title = title;</code>
<code> </code><code>public</code> <code>String getPubTime() {</code>
<code> </code><code>return</code> <code>pubTime;</code>
<code> </code><code>public</code> <code>void</code> <code>setPubTime(String pubTime) {</code>
<code> </code><code>this</code><code>.pubTime = pubTime;</code>
<code> </code><code>public</code> <code>String getCategory() {</code>
<code> </code><code>return</code> <code>category;</code>
<code> </code><code>public</code> <code>void</code> <code>setCategory(String category) {</code>
<code> </code><code>this</code><code>.category = category;</code>
<code> </code><code>public</code> <code>String getNewsContent() {</code>
<code> </code><code>return</code> <code>newsContent;</code>
<code> </code><code>public</code> <code>void</code> <code>setNewsContent(String newsContent) {</code>
<code> </code><code>this</code><code>.newsContent = newsContent;</code>
<code>}</code>
自定義流的工具類
<code>public</code> <code>class</code> <code>CharStreamIO {</code>
<code> </code><code>public</code> <code>void</code> <code>copyFile(String fsrc,String fDest){</code>
<code> </code><code>File file = </code><code>new</code> <code>File(fDest);</code>
<code> </code><code>if</code><code>(file.exists()){</code>
<code> </code><code>file.delete();</code>
<code> </code><code>}</code>
<code> </code><code>PrintWriter out = </code><code>null</code><code>;</code>
<code> </code><code>BufferedReader in = </code><code>null</code><code>;</code>
<code> </code><code>try</code> <code>{</code>
<code> </code><code>in = </code><code>new</code> <code>BufferedReader(</code><code>new</code> <code>FileReader(fsrc));</code>
<code> </code><code>out = </code><code>new</code> <code>PrintWriter(</code><code>new</code> <code>BufferedWriter(</code><code>new</code> <code>FileWriter(fDest)));</code>
<code> </code><code>String strRet;</code>
<code> </code><code>while</code><code>((strRet=in.readLine()) != </code><code>null</code><code>){ </code>
<code> </code><code>out.println(strRet);</code>
<code> </code><code>out.flush();</code>
<code> </code><code>} </code>
<code> </code><code>} </code><code>catch</code> <code>(Exception e) {</code>
<code> </code><code>e.printStackTrace();</code>
<code> </code><code>}</code><code>finally</code><code>{</code>
<code> </code><code>if</code><code>(in != </code><code>null</code><code>){</code>
<code> </code><code>try</code> <code>{</code>
<code> </code><code>in.close();</code>
<code> </code><code>} </code><code>catch</code> <code>(Exception e2) {</code>
<code> </code><code>e2.printStackTrace();</code>
<code> </code><code>}</code>
<code> </code><code>}</code>
<code> </code><code>if</code><code>(out != </code><code>null</code><code>){</code>
<code> </code><code>out.close(); </code>
<code> </code><code>} </code>
<code> </code><code>/**</code>
<code> </code><code>* 把傳入的資訊,儲存成檔案</code>
<code> </code><code>* @param finfo 傳入的檔案内容資訊</code>
<code> </code><code>* @param fname 目标路徑和檔案名</code>
<code> </code><code>*/</code>
<code> </code><code>public</code> <code>void</code> <code>writeFile(String finfo,String fDest){</code>
<code> </code><code>out.write(finfo); </code>
<code> </code><code>out.flush();</code>
<code> </code><code>if</code><code>(out !=</code><code>null</code><code>){</code>
<code> </code><code>out.close();</code>
<code> </code><code>} </code>
<code> </code><code>* 讀取文本型檔案 </code>
<code> </code><code>* @param name</code>
<code> </code><code>* @return</code>
<code> </code><code>public</code> <code>String readFile(String fname){</code>
<code> </code>
<code> </code><code>File file = </code><code>new</code> <code>File(fname);</code>
<code> </code><code>StringBuilder bild = </code><code>new</code> <code>StringBuilder();</code>
<code> </code><code>try</code> <code>{</code>
<code> </code><code>in = </code><code>new</code> <code>BufferedReader(</code><code>new</code> <code>FileReader(fname));</code>
<code> </code><code>String strRet;</code>
<code> </code><code>while</code><code>((strRet=in.readLine()) != </code><code>null</code><code>){</code>
<code> </code><code>bild.append(strRet);</code>
<code> </code><code>} </code><code>catch</code> <code>(Exception e) {</code>
<code> </code><code>e.printStackTrace();</code>
<code> </code><code>}</code><code>finally</code><code>{</code>
<code> </code><code>if</code><code>(in != </code><code>null</code><code>){</code>
<code> </code><code>try</code> <code>{</code>
<code> </code><code>in.close();</code>
<code> </code><code>} </code><code>catch</code> <code>(Exception e2) {</code>
<code> </code><code>e2.printStackTrace();</code>
<code> </code><code>} </code>
<code> </code>
<code> </code><code>}</code><code>else</code><code>{</code>
<code> </code><code>System.out.println(fname + </code><code>"不存在"</code><code>);</code>
<code> </code><code>return</code> <code>bild.toString(); </code>
資料通路層
<code>public</code> <code>class</code> <code>NewsDao {</code>
<code> </code><code>* 讀取資料庫中要生成的新聞資訊</code>
<code> </code><code>public</code> <code>List<News> getAllNews(){</code>
<code> </code><code>CharStreamIO io = </code><code>new</code> <code>CharStreamIO();</code>
<code> </code><code>SimpleDateFormat sd = </code><code>new</code> <code>SimpleDateFormat(</code><code>"yyyy-MM-dd HH:mm:ss"</code><code>); </code>
<code> </code><code>List<News> newsList = </code><code>new</code> <code>ArrayList<News>();</code>
<code> </code><code>News n1 = </code><code>new</code> <code>News();</code>
<code> </code><code>n1.setCategory(</code><code>"sport"</code><code>);</code>
<code> </code><code>String c1 = io.readFile(</code><code>"NewsInfo\\news1.txt"</code><code>);</code>
<code> </code><code>n1.setNewsContent(c1); </code>
<code> </code><code>n1.setPubTime(sd.format(</code><code>new</code> <code>Date()));</code>
<code> </code><code>n1.setTitle(</code><code>"深足教練組:說我們買球是侮辱 朱廣滬常暗中支招"</code><code>);</code>
<code> </code><code>News n2 = </code><code>new</code> <code>News();</code>
<code> </code><code>n2.setCategory(</code><code>"hot"</code><code>);</code>
<code> </code><code>String c2 = io.readFile(</code><code>"\\NewsInfo\\news2.txt"</code><code>);</code>
<code> </code><code>n2.setNewsContent(c2);</code>
<code> </code><code>n2.setPubTime(sd.format(</code><code>new</code> <code>Date()));</code>
<code> </code><code>n2.setTitle(</code><code>"對對對發發發失誤失誤"</code><code>);</code>
<code> </code><code>newsList.add(n1);</code>
<code> </code><code>newsList.add(n2);</code>
<code> </code><code>return</code> <code>newsList;</code>
業務邏輯層
<code>public</code> <code>class</code> <code>NewsBiz {</code>
<code> </code><code>public</code> <code>void</code> <code>createAllNews() </code><code>throws</code> <code>Exception{ </code>
<code> </code><code>NewsDao dao = </code><code>new</code> <code>NewsDao();</code>
<code> </code><code>List<News> newsList = dao.getAllNews();</code>
<code> </code><code>String destPath = </code><code>"/News/newspages"</code><code>;</code>
<code> </code><code>for</code><code>(</code><code>int</code> <code>i=</code><code>0</code><code>;i<newsList.size();i++){</code>
<code> </code><code>//讀取模闆</code>
<code> </code><code>CharStreamIO io = </code><code>new</code> <code>CharStreamIO();</code>
<code> </code><code>String tmp = io.readFile(</code><code>"/News/news.tmp"</code><code>);</code>
<code> </code><code>//替換模闆中的參數資料</code>
<code> </code><code>News n = newsList.get(i);</code>
<code> </code><code>String newTmp;</code>
<code> </code><code>newTmp = tmp.replace(TemplateParam.TITLE, n.getTitle());</code>
<code> </code><code>newTmp = newTmp.replace(TemplateParam.CATEGORY,n.getCategory());</code>
<code> </code><code>newTmp = newTmp.replace(TemplateParam.PUB_TIME,n.getPubTime());</code>
<code> </code><code>newTmp = newTmp.replace(TemplateParam.CONTENT, n.getNewsContent());</code>
<code> </code><code>//把替換後的内容儲存成新聞頁面</code>
<code> </code><code>io.writeFile(newTmp, destPath + </code><code>"/news-"</code> <code>+ i + </code><code>".html"</code><code>); </code>
TemplateParam類
<code>public</code> <code>class</code> <code>TemplateParam {</code>
<code> </code><code>public</code> <code>static</code> <code>final</code> <code>String TITLE = </code><code>"%{title}%"</code><code>;</code>
<code> </code><code>public</code> <code>static</code> <code>final</code> <code>String CATEGORY = </code><code>"%{category}%"</code><code>;</code>
<code> </code><code>public</code> <code>static</code> <code>final</code> <code>String CONTENT = </code><code>"%{newsContent}%"</code><code>;</code>
<code> </code><code>public</code> <code>static</code> <code>final</code> <code>String PUB_TIME = </code><code>"%{pubTime}%"</code><code>;</code>
使用者接口層
<code>public</code> <code>class</code> <code>NewsTest {</code>
<code> </code><code>public</code> <code>static</code> <code>void</code> <code>main(String[] args) {</code>
<code> </code><code>NewsBiz biz = </code><code>new</code> <code>NewsBiz();</code>
<code> </code><code>biz.createAllNews(); </code>
<code> </code><code>System.out.println(</code><code>"新聞頁面建立完畢!"</code><code>);</code>
版權聲明:原創作品,謝絕轉載。否則将追究法律責任
本文轉自 叫我北北 51CTO部落格,原文連結:http://blog.51cto.com/qinbin/1964312