- 它既能代表一個特定文件,又能代表一個目錄
- 可以用File對象創建新目錄或者文件,還可以查看文件特性,並且刪除他們
- 流這個抽象概念代表任何有能力產出數據的數據源對象或者是有能力接受數據的接收端對象。流 屏蔽了實際I/O設備中處理數據的細節
- InputStream或者Reader派生而來的類都有read()方法,用於讀取單個字節或者字節數組;OutputStream或Writer派生而來的類都有write()方法,用於寫單個字節或者字節數組
- 他們提供兼容Unicode與面向字符的I/O功能
- 兩個適配器InputStreamReader把InputStream轉換成Reader;OutputStreamWriter把OutputStream轉換成Writer
- RandomAccessFile在1.4中大多數功能由nio取代
- 緩衝輸入文件:BufferedReader>>>FileReader>>>file
- 從內存輸入:StringReader
- 格式化的內存輸入:DataInputStream>>>ByteArrayInputStream
- 基本文件輸出:PrintWriter>>>BufferedWriter>>>FileWriter>>>file
- 恢復和存儲數據:如果我們一DataOutputStream寫入數據,Java保證可以使用DataInputStream準確的讀取數據,無論平臺多麼不同
- 複雜數據結構的讀取方式應該使用對象序列化和XML
- 按照標準I/O模型,Java提供了System.in,System.out,System.err
- System.in是一個沒有被包裝過的未經加工的InputStream,而其他兩個被包裝成了printStream
- setIn(InputStream),setOut(PrintStream),setErr(PrintStream)用於重定向
- 重定向操縱的是字節流,不是字符流
- 舊的I/O包已經使用nio重新實現過
- 方法:創建某些OutputStream對象>>>封裝在一個ObjectStream對象內>>>調用writeObject即可序列化對象>>>將其發送給OutputStream
- java的對象序列化似乎沒有什麼缺點,請儘量不要自己動手
- 對象序列化只是Java的解決方案,更具互動性的解決方案是將數據轉換爲XML格式,這可以被各種平臺和語言使用
- 用於存儲和讀取用戶的偏好以及程序配置項的設置