首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

Java IO 核心思想:流抽象屏蔽數據源差異,統一讀寫介面

     編輯:Java 相關知識

IO 是什麼?

I/O = Input / Output。程式本質:輸入數據 → 處理 → 輸出結果。數據源五花八門:檔案、網路、記憶體、鍵盤、資料庫…若每種源都學一套 API,工程師會崩潰。

流:統一介面的關鍵抽象

流 是「有序位元組/字符序列」的抽象。JDK 將所有數據源統一轉換為流,程式只需對流讀寫,底層轉換由系統完成。

生活類比:自來水系統

  • 水源:江河、湖泊、地下水(不同數據源)
  • 水廠:淨化、加壓、標準化(JDK 內部實現)
  • 水管:統一介面輸送到用戶端(流)
  • 水龍頭:使用者開關即用,無需關心水源(read/write)

讀取過程:兩步走

數據源 (檔案/網路/記憶體)
        │
        ▼  步驟1:JDK 自動完成 (程式員選類)
┌───────────────┐
│   流對象       │  有序位元組序列
│  InputStream  │
└───────┬───────┘
        │
        ▼  步驟2:程式員編碼完成
    read() → byte[]/char[]
        │
        ▼
   業務邏輯處理

寫入過程:兩步走

業務邏輯生成數據
        │
        ▼  步驟1:程式員編碼
    write(byte[]/char[]) → 流緩衝區
        │
        ▼
┌───────────────┐
│   流對象       │
│  OutputStream │
└───────┬───────┘
        │
        ▼  步驟2:JDK 自動完成 (close/flush 時)
數據源 (檔案/網路/記憶體)

流的方向性

方向流類型對應操作核心超類
程式 ← 數據源輸入流read()InputStream / Reader
程式 → 數據源輸出流write()OutputStream / Writer

方向相對於當前程式:讀 = 輸入,寫 = 輸出。

面向對象封裝:每種流一個類

  • 檔案流:FileInputStream, FileOutputStream
  • 記憶體流:ByteArrayInputStream, ByteArrayOutputStream
  • 網路流:Socket.getInputStream()
  • 緩衝流:BufferedInputStream
  • …

建立對應物件 = 完成流構造;後續只操作物件方法。

核心優勢總結

  1. 屏蔽差異:同一套 read/write API 應對所有源。
  2. 組合靈活:裝飾模式動態增強功能(緩衝、編碼、壓縮、加密)。
  3. 擴展性強:新數據源只需實作 InputStream/OutputStream 子類。
  4. 記憶體安全:流式處理避免大檔案一次性載入 OOM。

下一步學習路線圖

IO 入門
    │
    ├─ 1. 掌握四大基類核心方法 (read/write/close/flush)
    │
    ├─ 2. 熟練實體流 (File/ByteArray/Socket)
    │
    ├─ 3. 靈活組合裝飾流 (Buffered/Data/Object/Print/橋接)
    │
    ├─ 4. 實戰:檔案拷貝、配置讀寫、物件序列化、網路通訊
    │
    └─ 5. 進階:NIO (Channel/Buffer/Selector)、AIO、記憶體映射

總結

流是 Java IO 的靈魂:**以統一序列抽象屏蔽底層異構性,以裝飾模式實現功能無限組合**。理解「流 = 有序序列 + 統一介面」,是精通 Java IO、網路程式、NIO 的基石。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved