輸入流和輸出流是相對於內存來講的數組
將外設中的數據寫到內存中是輸入
將內存中的數據寫到外設中是輸出網絡
字符流的由來:
其實就是:字節流讀取文字字節數組後,不直接操做而是先查指定的編碼表,獲取對應的文字
在對這個文字進行操做,簡單來講就是字節流+編碼表socket
------------------
字節流的兩個頂級的父類
inputStream outputStream編碼
字符流的兩個頂級的父類
1.Reader 2.Writer
這些子類的都以父類的名字爲後綴
前綴就是這些子類的功能對象
//需求:將一些文字存儲到硬盤一個文件中。
操做文件的就能夠想到FileWriter
//需求:將一些文字從硬盤讀取到內存中
就想到了FileReader
BufferWriter:新方法newline();
BufferedReader:新方法readLine();
裝飾者模式:
當對一組對象的功能須要加強的時候就能夠用 ,與繼承有什麼區別呢,裝飾者模式能夠靈活的使用須要裝飾的東西,由於繼承體系太龐大了若是單純爲了
某個功能進行繼承,那麼體系就會愈來愈臃腫。
-----------------------------------------------繼承
字節流:接口
InputStream
內存
OutputStream開發
字節流:
FileInputStream
FileOutputStream
BufferedInputStream
BufferedOutputStream
字符流:
Writer Reader
FileReader
FileWriter
BufferedReader
BufferedWriter
--------------------------------------------------
轉換流
inputStreamReader():
outputStreamWriter();input
字節到字符的流的橋樑 解碼
字符到字節流的橋樑 編碼
流的操做規律:
由於流的對象太多了,開發的過程當中不知道用哪一個對象合適
想知道用哪一個對象,只須要讀懂4個明確
1.明確源和目的: 源 :inputStream Reader 目的:OutputStream Writer 2.明確數據是不是純文本: 源:是純文本 Reader 不是:InputStream 目的:是純文本:Writer 不是:OutputStream 3.明確具體的設備: 源設備: 硬盤:file 鍵盤:System.in 內存:Array 網絡:socket 目的設備: 硬盤:File 控制檯:System.out 內存:Array 網絡:Socket 4.是否須要其餘額外功能: 緩衝: Buffered 轉換流: InputStreamReader OutputStreamWriter SequenceInputStream: 特色: 1,將多個字節讀取流和併成一個讀取流,將多個源合併成一個源,操做起來方便。 2,須要的枚舉接口能夠經過Collections.enumeration(collection); properties 是HashTable的一個子類,是存一些配置文件之類的是鍵值對 properties.load(in)吧文件的內容讀取出來放入源中 properties.store(write)是源中的數據寫入pro中