嗨嘍,小樂又來了,今天要給你們送上的技術文章是Java重點知識-IO流。java
先來看看IO流的思惟導圖吧。
數據庫
在Java中,Everything is Object!因此在文件中,也不例外!在Java中,能夠用 File類來表示一個與硬盤上文件聯繫!!!注意:設計模式
一、File僅表明一個聯繫,可能文件存在,也可能不存在;網絡
二、這裏的文件能夠是文件,也能夠是文件夾;性能
在經常使用類中已經詳細講過File,此處不在講解spa
流即流動、流向,從一端流向另外一端。如水流:從山裏流向到人家;車流:從公司流動到設計
家裏;聲音流:從發出者流動到對方的耳朵裏。視頻
文件流:從一端流動到另外一端,即從java內存流動到存儲介質中。存儲介質包括:硬盤文件、數據庫與網絡等節點(數據源)。記住:一切以java內存爲中心。blog
data source. 提供原始數據的原始媒介。常見的:數據庫、文件、其餘程序、內存、網絡鏈接、IO設備。圖片
數據源就像水箱,流就像水管中流着的水流,程序就是咱們最終的用戶。 流是一個抽象、動態的概念,是一連串連續動態的數據集合。
因而可知,IO流很龐大,從不一樣角度進行分類
1)、數據分類
按處理數據單位分爲:字節流和字符流。處理數據是音頻、視頻、doc、文本等一切爲字節流,僅能處理文本的爲字符流。 字節流和字符流的用法幾乎徹底一致,區別在於它們所操做的數據單元不一樣,字節流(8 位)、字符流(16 位),字節流主要由 InputStream 和OutputStream做爲基類,字符流主要由Reader 和 Writer做爲基類。
2)、流向分類
輸入流和輸出流。從節點到 java 內存叫輸入流,從 java 內存到節點叫輸出流。Java 的輸入流主要由InputStream和Reader做爲基類,輸出流主要由OutputStream和Writer做爲基類。
3)、功能分類
節點流和處理流。從/向一個特定的I/0設備(磁盤、網絡等)讀寫數據的流稱爲節點流,也常被稱爲低級流。 處理流則對於一個已存在的節點流進行鏈接或封裝,常被稱爲高級流(裝飾器設計模式)。處理流爲加強、提高性能的,自己不具有直接操做節點的能力。如擴音器,就是放大聲音的。 節點流處於io操做的第一線,全部操做必須經過他們進行;處理流能夠對其餘流 進行處理(提升效率或操做靈活性).
處理流的功能主要體如今:
a、性能的提升:主要以增長緩衝的方式來提升輸入/輸出的效率 ;
b、操做的便捷:提供了系列便捷的方法來一次輸入/輸出大批量內容。
使用流抽象的概念,屏蔽了實際的 I/O設備中處理數據的細節。
五、操做 IO流的步驟
操做IO就跟搬家是同一個道理
核心步驟以下
1)、創建聯繫
2)、選擇流
3)、操做:寫出 讀取
4)、釋放資源(程序中打開的文件 IO 資源不屬於內存中的資源,垃圾回收沒法回收,
須要顯示關閉。)
好勒,關於IO流的概念和基礎知識點就先講到這,接下來請看IO流的主要內容:輸入流和輸出流。樂字節原創,請多關注樂字節。