=======I/O==========================================================================
File:代表了磁盤上的文件或者目錄
I/O:jvm和外部數據源的數據交換。File,db—in-àjvm---out-àfile,db
流一共有三種分類:
方向分:輸入流和輸出流;
單位分:字節流和字符流;
字節流:
InputStream/OutputStream 字節流的父接口
(1)FileInputStream/FileOutputStream 文件字節流 ((可以向下轉換))
DataInputStream/DataOutputStream 讀寫8種基本類型和以UTF-8讀寫String
BufferedInputStream/BufferedOutputStream 帶緩沖的輸入/出流
PrintStream 融合Data和Buffered, System.out所屬的類
Piped 管道 用於線程間交換數據
RandomAccessFile 隨機訪問文件
字符流:處理字符編碼問題
Reader/Writer 字符流的父接口
FileReader/FileWriter 文件字符流,和FileInputStream/FileOutputStream 文件流,
((可以向下轉換)) 與上面的(1)是相等,
只不過一個是字節流,下面是字符流,所以兩個無法相傳
InputStreamReader/OutputStreamWriter 橋轉換 將字節流轉成字符流 在橋轉換的過程中,可以制定編解碼方式
BufferedReader/PrintWriter 有緩沖
字符流轉換為字節流時,指定編解碼方式是在橋轉換時指定的。
功能分:節點流和過濾流;
節點流:用於傳輸數據。
過濾流:幫助節點流更好的傳輸數據。
piped(管道節點流):用於兩個線程間傳輸數據。一個線程的輸出,是另一個線程的輸入。
對象序列化:
把對象放在流上傳輸ObjectInputStream/ObjectOutputStream
只有實現了Serializable接口的對象才能序列化
用transient修飾的屬性,為臨時屬性,不參與序列化,只能修飾對象的屬性。