1. 程式人生 > >16位流應用與代碼統計器例題

16位流應用與代碼統計器例題

16位流應用

16位流應用:

使用PrintStream進行打印並且輸出到控制臺以及文本上,每次的輸出要帶有一個格式為:yyyy-MM-dd HH:mm:ss 的時間。

首先寫一個類繼承於PrintStream,然後重寫printprintln方法,再替換一下系統的out輸出通道。

代碼示例:

技術分享

技術分享

技術分享



接著寫一個測試類查看實現效果:

代碼示例:

技術分享


運行效果:

控制臺:

技術分享


文本:

技術分享




FileReader/FileWriter流:

FileReader16位流的文件讀取流,裏面的方法和8位流基本是一樣的,一樣的讀取方法,有單個字符讀取,批量讀取和控制範圍讀取,skip跳過字符方法也有,其實在16流裏就是把概念從字節換成了字符而已。

代碼示例:

技術分享


運行結果:

技術分享




FileWriter16位流裏的輸出流,裏面的方法也是和8位流基本是一樣的,也是有單個輸出,批量和控制範圍輸出。所以基本16位流也不需要過多贅述,只要8位流掌握了,16位流只要寫幾遍基本也就掌握了。

代碼示例:

技術分享


運行結果:

技術分享



BufferedReader/BufferedWriter流:

一目了然的緩存流,緩存池也是默認為8k,也可以在構造器中更改緩存的大小。16位流的緩存流倒是有個亮點,在16位流裏的讀取緩存流有個readLine方法可以一行行的讀取,讀到沒有值就會返回一個null

代碼示例:

技術分享


運行結果:

技術分享



InputStreamReader/OutputStreamWriter流:

InputStreamReader流可以將8位流轉換成16位流讀取,並且可以在構造器裏更改字符集,例如可以更改成UTF-8GB2312等字符集,但是需要註意的是設置的字符集要與文本裏的字符集一致,不然讀取出來的就是亂碼一般的文字。

OutputStreamWriter流可以將16位流轉換成8位流輸出,同樣的可以在構造器中更改字符集,同樣要註意的是如果你輸出的文本不支持你設置的字符集的話,輸出到文本上的內容也是亂碼一般的字符。

代碼示例:

技術分享


運行結果:因為Eclipse的文本默認是GBK字符集,所以顯示不會出現問題:

技術分享




制作一個代碼統計器:

要完成這個代碼統計器需要三個類:1.統計代碼行數類 2.搜索後綴為.java文件的搜索類 3.測試類,首先完成統計代碼行數類,然後是文件搜索類,最後是實現類。

1. 統計代碼行數類:

技術分享

技術分享



2.搜索後綴為.java文件的搜索類:

這個類使用遞歸查找就可以完成:

技術分享



3.測試類:

測試類基本就是最簡單了,調用完搜索類的方法後就打印countLinefileCount屬性就可以了:

技術分享


運行結果:

技術分享


本文出自 “zero” 博客,請務必保留此出處http://zero01.blog.51cto.com/12831981/1976629

16位流應用與代碼統計器例題