《thinking in java》學習筆記18

Java I/O系統
File類
  • 它既能代表一個特定文件,又能代表一個目錄
  • 可以用File對象創建新目錄或者文件,還可以查看文件特性,並且刪除他們

輸入和輸出
  • 流這個抽象概念代表任何有能力產出數據的數據源對象或者是有能力接受數據的接收端對象。流 屏蔽了實際I/O設備中處理數據的細節
  • InputStream或者Reader派生而來的類都有read()方法,用於讀取單個字節或者字節數組;OutputStream或Writer派生而來的類都有write()方法,用於寫單個字節或者字節數組
  • 《thinking <wbr>in <wbr>java》學習筆記18

添加屬性和有用的接口
  • DataInputStream允許讀取不同的基本類型數據以及String對象,搭配對應的DataOutputStream,我們可以通過數據六將基本類型的數據從一個地方遷移到另一個地方。幾乎要對每次輸入進行緩衝。
  • DataOutputStream可以將各種基本數據類型以及String對象格式化輸出到流中
  • PrintStream最初的目的便是爲了以可視化格式打印所有的基本數據類型以及String對象
  • BufferedOutputStream對數據流使用緩衝技術,因此當每次向流寫入時,不必每次都進行實際的物理寫入動作,所以進行輸出時,我們更經常使用它
  • 《thinking <wbr>in <wbr>java》學習筆記18

Reader和Writer
  • 他們提供兼容Unicode與面向字符的I/O功能
  • 兩個適配器InputStreamReader把InputStream轉換成Reader;OutputStreamWriter把OutputStream轉換成Writer
  • 《thinking <wbr>in <wbr>java》學習筆記18

自我獨立的類
  • RandomAccessFile在1.4中大多數功能由nio取代

典型的使用方式
  • 緩衝輸入文件:BufferedReader>>>FileReader>>>file
  • 從內存輸入:StringReader
  • 格式化的內存輸入:DataInputStream>>>ByteArrayInputStream
  • 基本文件輸出:PrintWriter>>>BufferedWriter>>>FileWriter>>>file
  • 恢復和存儲數據:如果我們一DataOutputStream寫入數據,Java保證可以使用DataInputStream準確的讀取數據,無論平臺多麼不同
  • 複雜數據結構的讀取方式應該使用對象序列化和XML

標準I/O
  • 按照標準I/O模型,Java提供了System.in,System.out,System.err
  • System.in是一個沒有被包裝過的未經加工的InputStream,而其他兩個被包裝成了printStream
  • setIn(InputStream),setOut(PrintStream),setErr(PrintStream)用於重定向
  • 重定向操縱的是字節流,不是字符流

新I/O
  • 舊的I/O包已經使用nio重新實現過

壓縮
  • 《thinking <wbr>in <wbr>java》學習筆記18
  • 壓縮類的使用:直接將輸出封裝成壓縮流即可

對象序列化
  • 方法:創建某些OutputStream對象>>>封裝在一個ObjectStream對象內>>>調用writeObject即可序列化對象>>>將其發送給OutputStream
  • java的對象序列化似乎沒有什麼缺點,請儘量不要自己動手

XML
  • 對象序列化只是Java的解決方案,更具互動性的解決方案是將數據轉換爲XML格式,這可以被各種平臺和語言使用

Preferences
  • 用於存儲和讀取用戶的偏好以及程序配置項的設置
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章