流是 Java 中最重要的基本概念之一。文件讀寫、網絡收發、進程通訊,幾乎全部須要輸入輸出的地方,都要用到流。java
流是作什麼用的呢?就是作輸入輸出用的。爲何輸入輸出要用「流」這種方式呢?由於程序輸入輸出的基本單位是字節,輸入就是獲取一串字節,輸出就是發送一串字節。可是不少狀況下,程序不可能接收全部的字節以後再進行處理,而是接收一點處理一點。比方你下載魔獸世界,不可能所有下載到內存裏再保存到硬盤上,而是下載一點就保存一點。這時,流這種方式就很是適合。網絡
在 Java 中,每一個流都是一個對象。流分爲兩種:輸入流(InputStream)和輸出流(OutputStream)。對於輸入流,你只要從流當中不停地把字節取出來就是了;而對於輸出流,你只要把準備好的字節串傳給它就行。
流對象是怎麼得到的呢?不一樣的外部系統,獲取流的方式也不一樣。例如,文件讀寫就要建立 FileInputStream/FileOutputStream 對象,而網絡通訊是經過 Socket 對象來獲取輸入輸出流的。通常來講,若是一個類有 getInputStream() 或 getOutputStream() 這樣的方法,就代表它是經過流對象來進行輸入輸出的。
對象
標準輸入輸出,文件的操做,網絡上的數據流,字符串流,對象流,zip文件流等等,java中將輸入輸出抽象稱爲流,就好像水管,將兩個容器鏈接起來。將數據衝外存中讀取到內存中的稱爲輸入流,將數據從內存寫入外存中的稱爲輸出流。進程
流是一個很形象的概念,當程序須要讀取數據的時候,就會開啓一個通向數據源的流,這個數據源能夠是文件,內存,或是網絡鏈接。相似的,當程序須要寫入數據的時候,就會開啓一個通向目的地的流ip
流(Stream)是字節的源或目的。 兩種基本的流是:輸入流(Input Stream)和輸出流(OutputStream)。可從中讀出一系列字節的對象稱爲輸入流。而能向其中寫入一系列字節的對象稱爲輸出流。 流的分類: 1:節點流:從特定的地方讀寫的流類,例如:磁盤或一塊內存區域。 2:過濾流:使用節點流做爲輸入或輸出。過濾流是使用一個已經存在的輸入流或輸出流鏈接建立的