16位流應用與代碼統計器例題
16位流應用:
使用PrintStream進行打印並且輸出到控制臺以及文本上,每次的輸出要帶有一個格式為:yyyy-MM-dd HH:mm:ss 的時間。
首先寫一個類繼承於PrintStream,然後重寫print和println方法,再替換一下系統的out輸出通道。
代碼示例:
接著寫一個測試類查看實現效果:
代碼示例:
運行效果:
控制臺:
文本:
FileReader/FileWriter流:
FileReader是16位流的文件讀取流,裏面的方法和8位流基本是一樣的,一樣的讀取方法,有單個字符讀取,批量讀取和控制範圍讀取,skip跳過字符方法也有,其實在16流裏就是把概念從字節換成了字符而已。
代碼示例:
運行結果:
FileWriter是16位流裏的輸出流,裏面的方法也是和8位流基本是一樣的,也是有單個輸出,批量和控制範圍輸出。所以基本16位流也不需要過多贅述,只要8位流掌握了,16位流只要寫幾遍基本也就掌握了。
代碼示例:
運行結果:
BufferedReader/BufferedWriter流:
一目了然的緩存流,緩存池也是默認為8k,也可以在構造器中更改緩存的大小。16位流的緩存流倒是有個亮點,在16位流裏的讀取緩存流有個readLine方法可以一行行的讀取,讀到沒有值就會返回一個null。
代碼示例:
運行結果:
InputStreamReader/OutputStreamWriter流:
InputStreamReader流可以將8位流轉換成16位流讀取,並且可以在構造器裏更改字符集,例如可以更改成UTF-8、GB2312等字符集,但是需要註意的是設置的字符集要與文本裏的字符集一致,不然讀取出來的就是亂碼一般的文字。
OutputStreamWriter流可以將16位流轉換成8位流輸出,同樣的可以在構造器中更改字符集,同樣要註意的是如果你輸出的文本不支持你設置的字符集的話,輸出到文本上的內容也是亂碼一般的字符。
代碼示例:
運行結果:因為Eclipse的文本默認是GBK字符集,所以顯示不會出現問題:
制作一個代碼統計器:
要完成這個代碼統計器需要三個類:1.統計代碼行數類 2.搜索後綴為.java文件的搜索類 3.測試類,首先完成統計代碼行數類,然後是文件搜索類,最後是實現類。
1. 統計代碼行數類:
2.搜索後綴為.java文件的搜索類:
這個類使用遞歸查找就可以完成:
3.測試類:
測試類基本就是最簡單了,調用完搜索類的方法後就打印countLine和fileCount屬性就可以了:
運行結果:
本文出自 “zero” 博客,請務必保留此出處http://zero01.blog.51cto.com/12831981/1976629
16位流應用與代碼統計器例題