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

Java IO 流體系全景:從概念到四大抽象類實戰

     編輯:Java 綜合教學

Java IO 流體系全景:從概念到四大抽象類實戰

流是連續資料序列的抽象,如同水管中的水流。Java 在 java.io 套件提供豐富的流類別,掌握其分類與核心抽象是高效處理輸入輸出的基礎。

一、流的分類

維度分類說明
資料方向輸入流 / 輸出流以程式為參考點:讀入為輸入,寫出為輸出
處理單位位元組流 / 字元流位元組流處理二進位資料;字元流處理文本,自動處理編碼轉換
功能角色節點流 / 處理流節點流直接連接資料源(檔案、網路);處理流包裝節點流提供緩衝、轉換等增強功能

二、四大抽象基類

所有具體流類別均繼承自以下四個抽象類:

  • InputStream:位元組輸入流
  • OutputStream:位元組輸出流
  • Reader:字元輸入流
  • Writer:字元輸出流

三、核心類別與常用操作

1. InputStream / FileInputStream

// 一次性讀取整個檔案
File file = new File("d:/test.txt");
try (InputStream in = new FileInputStream(file)) {
    byte[] data = new byte[(int) file.length()];
    in.read(data);
    System.out.println(new String(data));
}

// 逐位元組讀取(不知大小)
try (InputStream in = new FileInputStream(file)) {
    byte[] buf = new byte[1024];
    int len, temp;
    while ((temp = in.read()) != -1) {
        buf[len++] = (byte) temp;
    }
    System.out.println(new String(buf, 0, len));
}

2. OutputStream / FileOutputStream

File file = new File("d:/test.txt");
try (OutputStream out = new FileOutputStream(file)) {
    String str = "Hello World";
    out.write(str.getBytes());
}

3. Reader / FileReader

File file = new File("d:/test.txt");
try (Reader in = new FileReader(file)) {
    char[] buf = new char[1024];
    int len = in.read(buf);
    System.out.println(new String(buf, 0, len));
}

4. Writer / FileWriter

File file = new File("d:/test.txt");
try (Writer out = new FileWriter(file)) {
    out.write("Hello World");
}

四、進階主題預告

  • 緩衝流(BufferedInputStream/BufferedReader)大幅提升效能。
  • 轉換流(InputStreamReader/OutputStreamWriter)橋接位元組與字元,指定編碼。
  • 資料流(DataInputStream/DataOutputStream)讀寫基本型別。
  • 物件序列化(ObjectInputStream/ObjectOutputStream)。
  • NIO 與 NIO.2(通道、緩衝區、非阻塞、Path/Files API)。

五、最佳實踐

  1. 優先使用 try-with-resources 自動關閉流。
  2. 處理文本時優先用字元流(Reader/Writer)並指定編碼(如 UTF-8)。
  3. 大量資料讀寫必須加緩衝。
  4. 區分節點流與處理流,靈活組合(如 new BufferedReader(new InputStreamReader(new FileInputStream(file), "UTF-8")))。

六、總結

理解流的四大抽象類與三大分類維度,能快速定位所需 API。實際開發中,多練習組合流處理各種場景,再深入學習 NIO 以應對高併發需求。

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