總結_I/O注意事項(針對文件)

       去年在《java I/O》和《DMS總結》裏把javaAPI裏多數I/O流的常用點、套接方式總結了差不多。

        這幾天在邊學邊做一個dom4j轉換器(Y2B_converter),用到XML文件的讀取/寫入,而且用的是框架封裝好的SAXReader和XMLWriter;這時感覺對某一類問題,重要的是抓住關鍵點,因爲現在框架太多了,封裝的API也不可能一個個去深入研究;比如關於文件的I/O,除了XML,還有excel等,就算碰到最多的只有數據文件,需求也可能是千變萬化的,只靠一點“套路”是很喫力的。

        要想針對某一特定需求,快速地寫出健壯、邏輯清晰的代碼,就要心裏有——它的真正“目的”,以及它隱藏的“危險”。

        儘管很難,尤其是後者,需要的是經驗。但程序員一定不要陷入“網上搜例子--查API--套用API--出bug--深究API--時間不夠--草草了事”這樣混亂的循環中。

        頭腦不清晰、目的性不強,就會掙扎在細枝末節機械運動的泥沼中不能自拔。當然,人在遇到新問題時,就會採取這樣的方案。


        所以我總結:

        1.學生,就是要打好基礎,研究和練習javaAPI。所謂基礎,不見得以後工作中用到的就最多;但是,javaAPI就是“萬變不離其宗”裏的那個“宗”,項目會用很多框架,但解決特定問題框架的API都是對特定javaAPI的封裝;所以,快速學新框架的竅門就是基礎熟練

        2.工作,如果你想少走彎路(尤其特定領域裏),就一定要有意識得總結經驗、主動思考。就像前面說的,針對某一領域問題,都會有“背後的危險”,這隻能靠多經歷、多總結來避免。如果你想nb,你想把事情做的漂亮,這就是常說的“臺下十年功”吧。



        言歸正傳,I/O輸入輸出流,針對兩個領域:文件處理和網絡傳輸。這裏總結的是前者。

        編程中常常讀取/寫入的文件類型有:數據file、文本file、xml、excel。


        0.除了數據file,其它文件在I/O(尤其是寫入)時,一定不要忽視【字符編碼】。這是前面說的“危險”,因爲這類應用常出現亂碼bug。

        1.數據file。簡單的字節流及其包裝流。技巧是包裝流:BufferedReader在日誌文件裏常用,因爲裏面數據有規律;DataImputStream+ByteArrayInputStream用來一次讀取一個基本數據類型,如readInt()。

        2.文本file。FileReader和FileWriter及其包裝類。BufferedReader常用是因有好用的readLine()方法;PrintWriter是寫入文本時最常用的,因其print系方法;[XMLWriter writer = new XMLWriter( new OutputStreamWriter(new FileOutputStream(filename),"UTF-8"));]

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章