“神奇的飲食,一周減肥20磅”
“熱情的XXX寶貝想見你”
有時,我們會收到很多不受歡迎的 電子郵件,這些郵件往往令人不快。那些還沒有受垃圾電子郵件之苦的幸運者也應該意識到這 是一個現實的問題。這里我們將介紹一種利用JAVA控制垃圾電子郵件的方法。
監視敵人我們無法逃避垃圾電子郵件,只能 盡量減少它對我們生活的侵擾。最好,也是最有效的方法是阻止人們給我們發不受歡迎的電子 郵件。我們必須在看到垃圾電子郵件之前消除它,那么如何實現呢?
一種行之有效的方法是檢查電子郵件的內容,然后決定是否保留它。其實,我們在閱讀電子郵件時就是這樣做的:我們一個接一個字符、一行接一行地讀電子郵件,搜索我們認識地單詞,如果其中包括單詞“Java”,我們便保留它,如果包括“MakeMoneyFast”,我們便將它扔到垃圾桶里。能否編制一個計算機程序來幫助我們更有效地工作呢?
戰術評估下面,我們討論Java類庫I/O包中 的類。Java類庫的輸入輸出類基于一種簡單但強大的模型:“流”(Streams)。
在“流”模型中,信 息從一點“流”到另一點,就象在河流或者管道中一樣。在“流”中的任何一點,觀察者看到信息一 點一點地順序流過。這種模型適合現實世界中很多類型的信息,比如來自計算機鍵盤的鍵 碼(Keycodes)、來自聲音文件的聲音數據、來自文本文件的一行接一行的文本等都是信息流。
圖1“流”中信息從一點傳到另一點
“流”中的一個重 要工具便是“過濾器”(Filters)。“過濾器”從“流”的“上游”獲取信息,用某種方式過濾或者處理 后,發送到“流”的“下游”。“流”模型功能強大的關鍵是可以用一些非常簡單的、獨立的“過濾器” 串成一個功能強大的復合“過濾器”。
圖2“過濾器”中斷處理信息流
圖3級聯“過濾器”
Java類庫將“流”分為兩類──輸 入和輸出,這種區分在理論上是不必要的,但是在實際應用中卻是有用的。輸入“流”的最初來源 是某一設備或者文件,它將數據從設備或文件輸入到程序中,輸入“流”在處理中一般是要過濾 的。輸出“流”的最終目標也是某一設備或者文件,它將數據從程序輸出到設備或文件中,輸入“ 流”在處理中一般也是要過濾的。
有兩個原因使我們將Java類庫中 的“流”類應用到垃圾電子郵件問題的解決方案中:
- 可以很容易地將電子郵件看做是一個接一個字符、一行接一行進入到計算機的。
- 當電子郵件進入計算機時,我們要一個接一個字符、一行接一行地檢查是否與我們指定的模板匹配。